[INFO] cloning repository https://github.com/hydai/hammurabi
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/hydai/hammurabi" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhydai%2Fhammurabi", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhydai%2Fhammurabi'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] cf30664b25886bf6c2e89d418fed4e377d8aaf03
[INFO] testing hydai/hammurabi against try#28f95933dc0727396c07b48d0a8cb5211b7fb472 for pr-154065-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhydai%2Fhammurabi" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/hydai/hammurabi
[INFO] finished tweaking git repo https://github.com/hydai/hammurabi
[INFO] tweaked toml for git repo https://github.com/hydai/hammurabi written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/hydai/hammurabi on toolchain 28f95933dc0727396c07b48d0a8cb5211b7fb472
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/hydai/hammurabi already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] ebec0919378c355c1260e027c4aedab3d4ec1273d225729351f087af5325034a
[INFO] running `Command { std: "docker" "start" "-a" "ebec0919378c355c1260e027c4aedab3d4ec1273d225729351f087af5325034a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "ebec0919378c355c1260e027c4aedab3d4ec1273d225729351f087af5325034a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ebec0919378c355c1260e027c4aedab3d4ec1273d225729351f087af5325034a", kill_on_drop: false }`
[INFO] [stdout] ebec0919378c355c1260e027c4aedab3d4ec1273d225729351f087af5325034a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 19299faf0c7944ea55c35c72b7070c542c368c22fbd1a31dc9596dbda91dc778
[INFO] running `Command { std: "docker" "start" "-a" "19299faf0c7944ea55c35c72b7070c542c368c22fbd1a31dc9596dbda91dc778", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling shlex v1.3.0
[INFO] [stderr]    Compiling find-msvc-tools v0.1.9
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling bytes v1.11.1
[INFO] [stderr]    Compiling stable_deref_trait v1.2.1
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling cc v1.2.60
[INFO] [stderr]    Compiling futures-core v0.3.32
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling scopeguard v1.2.0
[INFO] [stderr]    Compiling lock_api v0.4.14
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling futures-task v0.3.32
[INFO] [stderr]    Compiling futures-io v0.3.32
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling zeroize v1.8.2
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling writeable v0.6.3
[INFO] [stderr]    Compiling litemap v0.8.2
[INFO] [stderr]    Compiling autocfg v1.5.0
[INFO] [stderr]    Compiling rustls-pki-types v1.14.0
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling icu_normalizer_data v2.2.0
[INFO] [stderr]    Compiling icu_properties_data v2.2.0
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling utf8_iter v1.0.4
[INFO] [stderr]    Compiling untrusted v0.9.0
[INFO] [stderr]    Compiling simd-adler32 v0.3.9
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling try-lock v0.2.5
[INFO] [stderr]    Compiling tower-service v0.3.3
[INFO] [stderr]    Compiling adler2 v2.0.1
[INFO] [stderr]    Compiling want v0.3.1
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling version_check v0.9.5
[INFO] [stderr]    Compiling rustls v0.23.39
[INFO] [stderr]    Compiling atomic-waker v1.1.2
[INFO] [stderr]    Compiling zerocopy v0.8.48
[INFO] [stderr]    Compiling time-core v0.1.8
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling powerfmt v0.2.0
[INFO] [stderr]    Compiling ipnet v2.12.0
[INFO] [stderr]    Compiling compression-core v0.4.31
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]    Compiling subtle v2.6.1
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling num-conv v0.2.1
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling time-macros v0.2.27
[INFO] [stderr]    Compiling compression-codecs v0.4.37
[INFO] [stderr]    Compiling deranged v0.5.8
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling tower-layer v0.3.3
[INFO] [stderr]    Compiling utf8parse v0.2.2
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling openssl-probe v0.2.1
[INFO] [stderr]    Compiling vcpkg v0.2.15
[INFO] [stderr]    Compiling bitflags v2.11.1
[INFO] [stderr]    Compiling pkg-config v0.3.33
[INFO] [stderr]    Compiling rustversion v1.0.22
[INFO] [stderr]    Compiling rustls-native-certs v0.8.3
[INFO] [stderr]    Compiling anstyle-parse v1.0.0
[INFO] [stderr]    Compiling num-bigint v0.4.6
[INFO] [stderr]    Compiling libsqlite3-sys v0.28.0
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling webpki-roots v1.0.7
[INFO] [stderr]    Compiling time v0.3.47
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling is_terminal_polyfill v1.70.2
[INFO] [stderr]    Compiling anstyle-query v1.1.5
[INFO] [stderr]    Compiling equivalent v1.0.2
[INFO] [stderr]    Compiling iri-string v0.7.12
[INFO] [stderr]    Compiling hashbrown v0.17.0
[INFO] [stderr]    Compiling anstyle v1.0.14
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling colorchoice v1.0.5
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling rustls-webpki v0.103.13
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling pem v3.0.6
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling zerofrom v0.1.7
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling yoke v0.8.2
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling tokio v1.52.1
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling tinystr v0.8.3
[INFO] [stderr]    Compiling icu_locale_core v2.2.0
[INFO] [stderr]    Compiling potential_utf v0.1.5
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling simple_asn1 v0.6.4
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling pin-project-internal v1.1.11
[INFO] [stderr]    Compiling snafu-derive v0.8.9
[INFO] [stderr]    Compiling toml_write v0.1.2
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling anyhow v1.0.102
[INFO] [stderr]    Compiling clap_lex v1.1.0
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling pin-project v1.1.11
[INFO] [stderr]    Compiling jsonwebtoken v9.3.1
[INFO] [stderr]    Compiling hashlink v0.9.1
[INFO] [stderr]    Compiling hyper v1.9.0
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling async-compression v0.4.41
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling snafu v0.8.9
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling arc-swap v1.9.1
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling secrecy v0.10.3
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling nu-ansi-term v0.50.3
[INFO] [stderr]    Compiling fallible-iterator v0.3.0
[INFO] [stderr]    Compiling fallible-streaming-iterator v0.1.9
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling hyper-rustls v0.27.9
[INFO] [stderr]    Compiling hyper-timeout v0.5.2
[INFO] [stderr]    Compiling octocrab v0.41.2
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling rusqlite v0.31.0
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling hammurabi v0.1.3 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 3m 16s
[INFO] running `Command { std: "docker" "inspect" "19299faf0c7944ea55c35c72b7070c542c368c22fbd1a31dc9596dbda91dc778", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "19299faf0c7944ea55c35c72b7070c542c368c22fbd1a31dc9596dbda91dc778", kill_on_drop: false }`
[INFO] [stdout] 19299faf0c7944ea55c35c72b7070c542c368c22fbd1a31dc9596dbda91dc778
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] aa87cef66ef340ddb2d2cdb36e0adf7976b2a499e8c0b5acebd5bb390d7e14ae
[INFO] running `Command { std: "docker" "start" "-a" "aa87cef66ef340ddb2d2cdb36e0adf7976b2a499e8c0b5acebd5bb390d7e14ae", kill_on_drop: false }`
[INFO] [stderr]    Compiling hammurabi v0.1.3 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `claude_cli::ClaudeCliAgent`
[INFO] [stdout]   --> tests/../src/agents/mod.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub use claude_cli::ClaudeCliAgent;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `registry::AgentRegistry`
[INFO] [stdout]   --> tests/../src/agents/mod.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub use registry::AgentRegistry;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `claude_cli::ClaudeCliAgent`
[INFO] [stdout]   --> tests/../src/agents/mod.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub use claude_cli::ClaudeCliAgent;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `claude_cli::ClaudeCliAgent`
[INFO] [stdout]   --> tests/../src/agents/mod.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub use claude_cli::ClaudeCliAgent;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `reader_alive` is never used
[INFO] [stdout]    --> tests/../src/acp/session.rs:323:12
[INFO] [stdout]     |
[INFO] [stdout]  72 | impl Session {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 323 |     pub fn reader_alive(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `with_registry` is never used
[INFO] [stdout]   --> tests/../src/agents/acp.rs:69:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl AcpAgent {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn with_registry(mut self, registry: Arc<AcpSessionRegistry>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ClaudeCliAgent` is never constructed
[INFO] [stdout]   --> tests/../src/agents/claude_cli.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct ClaudeCliAgent;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> tests/../src/agents/claude_cli.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl ClaudeCliAgent {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 16 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> tests/../src/agents/registry.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl AgentRegistry {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 18 |     pub fn new(agents: HashMap<AgentKind, Arc<dyn AiAgent>>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Database`, `GitHub`, and `Worktree` are never constructed
[INFO] [stdout]   --> tests/../src/error.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum HammurabiError {
[INFO] [stdout]    |          -------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout]  9 |     Database(String),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 12 |     GitHub(String),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     Worktree(String),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `HammurabiError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `reader_alive` is never used
[INFO] [stdout]    --> tests/../src/acp/session.rs:323:12
[INFO] [stdout]     |
[INFO] [stdout]  72 | impl Session {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 323 |     pub fn reader_alive(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_acp` is never used
[INFO] [stdout]   --> tests/../src/agents/mod.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | impl AgentKind {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] 49 |     /// Is this kind served by the ACP adapter?
[INFO] [stdout] 50 |     pub fn is_acp(self) -> bool {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `with_registry` are never used
[INFO] [stdout]   --> tests/../src/agents/acp.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl AcpAgent {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 57 |     pub fn new(kind: AgentKind, def: AcpAgentDef) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn with_registry(mut self, registry: Arc<AcpSessionRegistry>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ClaudeCliAgent` is never constructed
[INFO] [stdout]   --> tests/../src/agents/claude_cli.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct ClaudeCliAgent;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> tests/../src/agents/claude_cli.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl ClaudeCliAgent {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 16 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> tests/../src/agents/registry.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl AgentRegistry {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 18 |     pub fn new(agents: HashMap<AgentKind, Arc<dyn AiAgent>>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `app_id`, `private_key_pem`, and `installation_id` are never read
[INFO] [stdout]   --> tests/../src/config.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 30 |     App {
[INFO] [stdout]    |     --- fields in this variant
[INFO] [stdout] 31 |         app_id: u64,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 32 |         private_key_pem: Vec<u8>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 33 |         installation_id: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GitHubAuth` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_cli_override` is never used
[INFO] [stdout]    --> tests/../src/config.rs:271:12
[INFO] [stdout]     |
[INFO] [stdout] 221 | impl RepoConfig {
[INFO] [stdout]     | --------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 271 |     pub fn from_cli_override(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_config_file` is never used
[INFO] [stdout]    --> tests/../src/config.rs:403:4
[INFO] [stdout]     |
[INFO] [stdout] 403 | fn find_config_file() -> Option<PathBuf> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dirs_path` is never used
[INFO] [stdout]    --> tests/../src/config.rs:418:4
[INFO] [stdout]     |
[INFO] [stdout] 418 | fn dirs_path() -> PathBuf {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load` is never used
[INFO] [stdout]    --> tests/../src/config.rs:496:14
[INFO] [stdout]     |
[INFO] [stdout] 496 | pub async fn load(source: &ConfigSource) -> Result<Config, HammurabiError> {
[INFO] [stdout]     |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_from` is never used
[INFO] [stdout]    --> tests/../src/config.rs:514:8
[INFO] [stdout]     |
[INFO] [stdout] 514 | pub fn load_from(explicit_path: Option<&Path>) -> Result<Config, HammurabiError> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_from_url` is never used
[INFO] [stdout]    --> tests/../src/config.rs:522:14
[INFO] [stdout]     |
[INFO] [stdout] 522 | pub async fn load_from_url(url: &str) -> Result<Config, HammurabiError> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_raw_from_path` is never used
[INFO] [stdout]    --> tests/../src/config.rs:533:4
[INFO] [stdout]     |
[INFO] [stdout] 533 | fn read_raw_from_path(explicit_path: Option<&Path>) -> Result<RawConfig, HammurabiError> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `empty_raw_config` is never used
[INFO] [stdout]    --> tests/../src/config.rs:550:4
[INFO] [stdout]     |
[INFO] [stdout] 550 | fn empty_raw_config() -> RawConfig {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `insert_discord_thread`, `get_discord_issue`, `set_issue_github_number`, `get_issue_by_id`, `get_issue_by_github_number_any_source`, and `update_issue_last_pr_comment` are never used
[INFO] [stdout]    --> tests/../src/db.rs:383:12
[INFO] [stdout]     |
[INFO] [stdout]  32 | impl Database {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 383 |     pub fn insert_discord_thread(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 419 |     pub fn get_discord_issue(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 440 |     pub fn set_issue_github_number(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 457 |     pub fn get_issue_by_id(&self, id: i64) -> Result<Option<TrackedIssue>, HammurabiError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 473 |     pub fn get_issue_by_github_number_any_source(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 669 |     pub fn update_issue_last_pr_comment(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `user_login` is never read
[INFO] [stdout]   --> tests/../src/github.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct GitHubIssue {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub user_login: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GitHubIssue` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> tests/../src/github.rs:95:12
[INFO] [stdout]    |
[INFO] [stdout] 94 | impl OctocrabClient {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 95 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `set_label_adder` is never used
[INFO] [stdout]    --> tests/../src/github.rs:735:16
[INFO] [stdout]     |
[INFO] [stdout] 692 |     impl MockGitHubClient {
[INFO] [stdout]     |     --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 735 |         pub fn set_label_adder(&self, issue_number: u64, label: &str, user: &str) {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AppTokenProvider` is never constructed
[INFO] [stdout]   --> tests/../src/worktree.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct AppTokenProvider {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> tests/../src/worktree.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 46 | impl AppTokenProvider {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] 47 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `ensure_default_branch` and `fetch_origin` are never used
[INFO] [stdout]   --> tests/../src/worktree.rs:76:14
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub trait WorktreeManager: Send + Sync {
[INFO] [stdout]    |           --------------- methods in this trait
[INFO] [stdout] 75 |     async fn ensure_bare_clone(&self, repo_url: &str) -> Result<PathBuf, HammurabiError>;
[INFO] [stdout] 76 |     async fn ensure_default_branch(&self, default_branch: &str) -> Result<(), HammurabiError>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 77 |     async fn fetch_origin(&self) -> Result<(), HammurabiError>;
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `reader_alive` is never used
[INFO] [stdout]    --> tests/../src/acp/session.rs:323:12
[INFO] [stdout]     |
[INFO] [stdout]  72 | impl Session {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 323 |     pub fn reader_alive(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_acp` is never used
[INFO] [stdout]   --> tests/../src/agents/mod.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | impl AgentKind {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] 49 |     /// Is this kind served by the ACP adapter?
[INFO] [stdout] 50 |     pub fn is_acp(self) -> bool {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `with_registry` are never used
[INFO] [stdout]   --> tests/../src/agents/acp.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl AcpAgent {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 57 |     pub fn new(kind: AgentKind, def: AcpAgentDef) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn with_registry(mut self, registry: Arc<AcpSessionRegistry>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ClaudeCliAgent` is never constructed
[INFO] [stdout]   --> tests/../src/agents/claude_cli.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct ClaudeCliAgent;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> tests/../src/agents/claude_cli.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl ClaudeCliAgent {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 16 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> tests/../src/agents/registry.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl AgentRegistry {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 18 |     pub fn new(agents: HashMap<AgentKind, Arc<dyn AiAgent>>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `app_id`, `private_key_pem`, and `installation_id` are never read
[INFO] [stdout]   --> tests/../src/config.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 30 |     App {
[INFO] [stdout]    |     --- fields in this variant
[INFO] [stdout] 31 |         app_id: u64,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 32 |         private_key_pem: Vec<u8>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 33 |         installation_id: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GitHubAuth` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_cli_override` is never used
[INFO] [stdout]    --> tests/../src/config.rs:271:12
[INFO] [stdout]     |
[INFO] [stdout] 221 | impl RepoConfig {
[INFO] [stdout]     | --------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 271 |     pub fn from_cli_override(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_config_file` is never used
[INFO] [stdout]    --> tests/../src/config.rs:403:4
[INFO] [stdout]     |
[INFO] [stdout] 403 | fn find_config_file() -> Option<PathBuf> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dirs_path` is never used
[INFO] [stdout]    --> tests/../src/config.rs:418:4
[INFO] [stdout]     |
[INFO] [stdout] 418 | fn dirs_path() -> PathBuf {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load` is never used
[INFO] [stdout]    --> tests/../src/config.rs:496:14
[INFO] [stdout]     |
[INFO] [stdout] 496 | pub async fn load(source: &ConfigSource) -> Result<Config, HammurabiError> {
[INFO] [stdout]     |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_from` is never used
[INFO] [stdout]    --> tests/../src/config.rs:514:8
[INFO] [stdout]     |
[INFO] [stdout] 514 | pub fn load_from(explicit_path: Option<&Path>) -> Result<Config, HammurabiError> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_from_url` is never used
[INFO] [stdout]    --> tests/../src/config.rs:522:14
[INFO] [stdout]     |
[INFO] [stdout] 522 | pub async fn load_from_url(url: &str) -> Result<Config, HammurabiError> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_raw_from_path` is never used
[INFO] [stdout]    --> tests/../src/config.rs:533:4
[INFO] [stdout]     |
[INFO] [stdout] 533 | fn read_raw_from_path(explicit_path: Option<&Path>) -> Result<RawConfig, HammurabiError> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `empty_raw_config` is never used
[INFO] [stdout]    --> tests/../src/config.rs:550:4
[INFO] [stdout]     |
[INFO] [stdout] 550 | fn empty_raw_config() -> RawConfig {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `insert_discord_thread`, `get_discord_issue`, `set_issue_github_number`, `get_issue_by_id`, `get_issue_by_github_number_any_source`, and `update_issue_last_pr_comment` are never used
[INFO] [stdout]    --> tests/../src/db.rs:383:12
[INFO] [stdout]     |
[INFO] [stdout]  32 | impl Database {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 383 |     pub fn insert_discord_thread(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 419 |     pub fn get_discord_issue(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 440 |     pub fn set_issue_github_number(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 457 |     pub fn get_issue_by_id(&self, id: i64) -> Result<Option<TrackedIssue>, HammurabiError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 473 |     pub fn get_issue_by_github_number_any_source(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 669 |     pub fn update_issue_last_pr_comment(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `user_login` is never read
[INFO] [stdout]   --> tests/../src/github.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct GitHubIssue {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub user_login: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GitHubIssue` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> tests/../src/github.rs:95:12
[INFO] [stdout]    |
[INFO] [stdout] 94 | impl OctocrabClient {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 95 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `set_label_adder` is never used
[INFO] [stdout]    --> tests/../src/github.rs:735:16
[INFO] [stdout]     |
[INFO] [stdout] 692 |     impl MockGitHubClient {
[INFO] [stdout]     |     --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 735 |         pub fn set_label_adder(&self, issue_number: u64, label: &str, user: &str) {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AppTokenProvider` is never constructed
[INFO] [stdout]   --> tests/../src/worktree.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct AppTokenProvider {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> tests/../src/worktree.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 46 | impl AppTokenProvider {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] 47 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `ensure_default_branch` and `fetch_origin` are never used
[INFO] [stdout]   --> tests/../src/worktree.rs:76:14
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub trait WorktreeManager: Send + Sync {
[INFO] [stdout]    |           --------------- methods in this trait
[INFO] [stdout] 75 |     async fn ensure_bare_clone(&self, repo_url: &str) -> Result<PathBuf, HammurabiError>;
[INFO] [stdout] 76 |     async fn ensure_default_branch(&self, default_branch: &str) -> Result<(), HammurabiError>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 77 |     async fn fetch_origin(&self) -> Result<(), HammurabiError>;
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `reader_alive` is never used
[INFO] [stdout]    --> src/acp/session.rs:323:12
[INFO] [stdout]     |
[INFO] [stdout]  72 | impl Session {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 323 |     pub fn reader_alive(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `set_label_adder` is never used
[INFO] [stdout]    --> src/github.rs:735:16
[INFO] [stdout]     |
[INFO] [stdout] 692 |     impl MockGitHubClient {
[INFO] [stdout]     |     --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 735 |         pub fn set_label_adder(&self, issue_number: u64, label: &str, user: &str) {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `reader_alive` is never used
[INFO] [stdout]    --> tests/../src/acp/session.rs:323:12
[INFO] [stdout]     |
[INFO] [stdout]  72 | impl Session {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 323 |     pub fn reader_alive(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_acp` is never used
[INFO] [stdout]   --> tests/../src/agents/mod.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | impl AgentKind {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] 49 |     /// Is this kind served by the ACP adapter?
[INFO] [stdout] 50 |     pub fn is_acp(self) -> bool {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `with_registry` are never used
[INFO] [stdout]   --> tests/../src/agents/acp.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl AcpAgent {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 57 |     pub fn new(kind: AgentKind, def: AcpAgentDef) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn with_registry(mut self, registry: Arc<AcpSessionRegistry>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ClaudeCliAgent` is never constructed
[INFO] [stdout]   --> tests/../src/agents/claude_cli.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct ClaudeCliAgent;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> tests/../src/agents/claude_cli.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl ClaudeCliAgent {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 16 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> tests/../src/agents/registry.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl AgentRegistry {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 18 |     pub fn new(agents: HashMap<AgentKind, Arc<dyn AiAgent>>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `app_id`, `private_key_pem`, and `installation_id` are never read
[INFO] [stdout]   --> tests/../src/config.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 30 |     App {
[INFO] [stdout]    |     --- fields in this variant
[INFO] [stdout] 31 |         app_id: u64,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 32 |         private_key_pem: Vec<u8>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 33 |         installation_id: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GitHubAuth` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_cli_override` is never used
[INFO] [stdout]    --> tests/../src/config.rs:271:12
[INFO] [stdout]     |
[INFO] [stdout] 221 | impl RepoConfig {
[INFO] [stdout]     | --------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 271 |     pub fn from_cli_override(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_config_file` is never used
[INFO] [stdout]    --> tests/../src/config.rs:403:4
[INFO] [stdout]     |
[INFO] [stdout] 403 | fn find_config_file() -> Option<PathBuf> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dirs_path` is never used
[INFO] [stdout]    --> tests/../src/config.rs:418:4
[INFO] [stdout]     |
[INFO] [stdout] 418 | fn dirs_path() -> PathBuf {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load` is never used
[INFO] [stdout]    --> tests/../src/config.rs:496:14
[INFO] [stdout]     |
[INFO] [stdout] 496 | pub async fn load(source: &ConfigSource) -> Result<Config, HammurabiError> {
[INFO] [stdout]     |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_from` is never used
[INFO] [stdout]    --> tests/../src/config.rs:514:8
[INFO] [stdout]     |
[INFO] [stdout] 514 | pub fn load_from(explicit_path: Option<&Path>) -> Result<Config, HammurabiError> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_from_url` is never used
[INFO] [stdout]    --> tests/../src/config.rs:522:14
[INFO] [stdout]     |
[INFO] [stdout] 522 | pub async fn load_from_url(url: &str) -> Result<Config, HammurabiError> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_raw_from_path` is never used
[INFO] [stdout]    --> tests/../src/config.rs:533:4
[INFO] [stdout]     |
[INFO] [stdout] 533 | fn read_raw_from_path(explicit_path: Option<&Path>) -> Result<RawConfig, HammurabiError> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `empty_raw_config` is never used
[INFO] [stdout]    --> tests/../src/config.rs:550:4
[INFO] [stdout]     |
[INFO] [stdout] 550 | fn empty_raw_config() -> RawConfig {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_issue_by_github_number_any_source` and `update_issue_last_pr_comment` are never used
[INFO] [stdout]    --> tests/../src/db.rs:473:12
[INFO] [stdout]     |
[INFO] [stdout]  32 | impl Database {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 473 |     pub fn get_issue_by_github_number_any_source(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 669 |     pub fn update_issue_last_pr_comment(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `user_login` is never read
[INFO] [stdout]   --> tests/../src/github.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct GitHubIssue {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub user_login: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GitHubIssue` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> tests/../src/github.rs:95:12
[INFO] [stdout]    |
[INFO] [stdout] 94 | impl OctocrabClient {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 95 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `set_label_adder` is never used
[INFO] [stdout]    --> tests/../src/github.rs:735:16
[INFO] [stdout]     |
[INFO] [stdout] 692 |     impl MockGitHubClient {
[INFO] [stdout]     |     --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 735 |         pub fn set_label_adder(&self, issue_number: u64, label: &str, user: &str) {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_agent_registry` is never used
[INFO] [stdout]   --> tests/../src/poller.rs:45:4
[INFO] [stdout]    |
[INFO] [stdout] 45 | fn build_agent_registry(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RepoRuntime` is never constructed
[INFO] [stdout]   --> tests/../src/poller.rs:71:8
[INFO] [stdout]    |
[INFO] [stdout] 71 | struct RepoRuntime {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_discord_client` is never used
[INFO] [stdout]   --> tests/../src/poller.rs:88:10
[INFO] [stdout]    |
[INFO] [stdout] 88 | async fn build_discord_client(cfg: &DiscordChannelConfig) -> Option<Arc<dyn DiscordClient>> {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spawn_signal_handler` is never used
[INFO] [stdout]    --> tests/../src/poller.rs:123:4
[INFO] [stdout]     |
[INFO] [stdout] 123 | fn spawn_signal_handler(token: tokio_util::sync::CancellationToken) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `seed_discord_cursor` is never used
[INFO] [stdout]    --> tests/../src/poller.rs:171:10
[INFO] [stdout]     |
[INFO] [stdout] 171 | async fn seed_discord_cursor(client: &dyn DiscordClient, channel_id: u64) -> Option<u64> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_daemon` is never used
[INFO] [stdout]    --> tests/../src/poller.rs:185:14
[INFO] [stdout]     |
[INFO] [stdout] 185 | pub async fn run_daemon(
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `auth_fingerprint` is never used
[INFO] [stdout]    --> tests/../src/poller.rs:489:4
[INFO] [stdout]     |
[INFO] [stdout] 489 | fn auth_fingerprint(auth: &GitHubAuth) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_token_provider` is never used
[INFO] [stdout]    --> tests/../src/poller.rs:507:4
[INFO] [stdout]     |
[INFO] [stdout] 507 | fn build_token_provider(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_repo_runtime` is never used
[INFO] [stdout]    --> tests/../src/poller.rs:536:10
[INFO] [stdout]     |
[INFO] [stdout] 536 | async fn init_repo_runtime(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `poll_cycle` is never used
[INFO] [stdout]    --> tests/../src/poller.rs:709:10
[INFO] [stdout]     |
[INFO] [stdout] 709 | async fn poll_cycle(ctx: &TransitionContext) -> Result<(), HammurabiError> {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `process_issue` is never used
[INFO] [stdout]    --> tests/../src/poller.rs:888:10
[INFO] [stdout]     |
[INFO] [stdout] 888 | async fn process_issue(
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_spec_drafting` is never used
[INFO] [stdout]    --> tests/../src/poller.rs:933:10
[INFO] [stdout]     |
[INFO] [stdout] 933 | async fn handle_spec_drafting(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_await_spec_approval` is never used
[INFO] [stdout]    --> tests/../src/poller.rs:979:10
[INFO] [stdout]     |
[INFO] [stdout] 979 | async fn handle_await_spec_approval(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_await_spec_approval_github` is never used
[INFO] [stdout]     --> tests/../src/poller.rs:1079:10
[INFO] [stdout]      |
[INFO] [stdout] 1079 | async fn handle_await_spec_approval_github(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_implementing` is never used
[INFO] [stdout]     --> tests/../src/poller.rs:1154:10
[INFO] [stdout]      |
[INFO] [stdout] 1154 | async fn handle_implementing(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_reviewing` is never used
[INFO] [stdout]     --> tests/../src/poller.rs:1162:10
[INFO] [stdout]      |
[INFO] [stdout] 1162 | async fn handle_reviewing(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_await_pr_approval` is never used
[INFO] [stdout]     --> tests/../src/poller.rs:1169:10
[INFO] [stdout]      |
[INFO] [stdout] 1169 | async fn handle_await_pr_approval(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_failed` is never used
[INFO] [stdout]     --> tests/../src/poller.rs:1234:10
[INFO] [stdout]      |
[INFO] [stdout] 1234 | async fn handle_failed(
[INFO] [stdout]      |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `reconcile` is never used
[INFO] [stdout]     --> tests/../src/poller.rs:1284:10
[INFO] [stdout]      |
[INFO] [stdout] 1284 | async fn reconcile(ctx: &TransitionContext) -> Result<(), HammurabiError> {
[INFO] [stdout]      |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AppTokenProvider` is never constructed
[INFO] [stdout]   --> tests/../src/worktree.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct AppTokenProvider {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> tests/../src/worktree.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 46 | impl AppTokenProvider {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] 47 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `ensure_default_branch` and `fetch_origin` are never used
[INFO] [stdout]   --> tests/../src/worktree.rs:76:14
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub trait WorktreeManager: Send + Sync {
[INFO] [stdout]    |           --------------- methods in this trait
[INFO] [stdout] 75 |     async fn ensure_bare_clone(&self, repo_url: &str) -> Result<PathBuf, HammurabiError>;
[INFO] [stdout] 76 |     async fn ensure_default_branch(&self, default_branch: &str) -> Result<(), HammurabiError>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 77 |     async fn fetch_origin(&self) -> Result<(), HammurabiError>;
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 05s
[INFO] running `Command { std: "docker" "inspect" "aa87cef66ef340ddb2d2cdb36e0adf7976b2a499e8c0b5acebd5bb390d7e14ae", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "aa87cef66ef340ddb2d2cdb36e0adf7976b2a499e8c0b5acebd5bb390d7e14ae", kill_on_drop: false }`
[INFO] [stdout] aa87cef66ef340ddb2d2cdb36e0adf7976b2a499e8c0b5acebd5bb390d7e14ae
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] d03f70b38c202b1cc1a23ffe082151086db12a0093c6326b6edde1f247149984
[INFO] running `Command { std: "docker" "start" "-a" "d03f70b38c202b1cc1a23ffe082151086db12a0093c6326b6edde1f247149984", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `claude_cli::ClaudeCliAgent`
[INFO] [stderr]   --> tests/../src/agents/mod.rs:30:9
[INFO] [stderr]    |
[INFO] [stderr] 30 | pub use claude_cli::ClaudeCliAgent;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: method `reader_alive` is never used
[INFO] [stderr]    --> tests/../src/acp/session.rs:323:12
[INFO] [stderr]     |
[INFO] [stderr]  72 | impl Session {
[INFO] [stderr]     | ------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 323 |     pub fn reader_alive(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: method `is_acp` is never used
[INFO] [stderr]   --> tests/../src/agents/mod.rs:50:12
[INFO] [stderr]    |
[INFO] [stderr] 48 | impl AgentKind {
[INFO] [stderr]    | -------------- method in this implementation
[INFO] [stderr] 49 |     /// Is this kind served by the ACP adapter?
[INFO] [stderr] 50 |     pub fn is_acp(self) -> bool {
[INFO] [stderr]    |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new` and `with_registry` are never used
[INFO] [stderr]   --> tests/../src/agents/acp.rs:57:12
[INFO] [stderr]    |
[INFO] [stderr] 56 | impl AcpAgent {
[INFO] [stderr]    | ------------- associated items in this implementation
[INFO] [stderr] 57 |     pub fn new(kind: AgentKind, def: AcpAgentDef) -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 69 |     pub fn with_registry(mut self, registry: Arc<AcpSessionRegistry>) -> Self {
[INFO] [stderr]    |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ClaudeCliAgent` is never constructed
[INFO] [stderr]   --> tests/../src/agents/claude_cli.rs:13:12
[INFO] [stderr]    |
[INFO] [stderr] 13 | pub struct ClaudeCliAgent;
[INFO] [stderr]    |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> tests/../src/agents/claude_cli.rs:16:12
[INFO] [stderr]    |
[INFO] [stderr] 15 | impl ClaudeCliAgent {
[INFO] [stderr]    | ------------------- associated function in this implementation
[INFO] [stderr] 16 |     pub fn new() -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> tests/../src/agents/registry.rs:18:12
[INFO] [stderr]    |
[INFO] [stderr] 17 | impl AgentRegistry {
[INFO] [stderr]    | ------------------ associated function in this implementation
[INFO] [stderr] 18 |     pub fn new(agents: HashMap<AgentKind, Arc<dyn AiAgent>>) -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `app_id`, `private_key_pem`, and `installation_id` are never read
[INFO] [stderr]   --> tests/../src/config.rs:31:9
[INFO] [stderr]    |
[INFO] [stderr] 30 |     App {
[INFO] [stderr]    |     --- fields in this variant
[INFO] [stderr] 31 |         app_id: u64,
[INFO] [stderr]    |         ^^^^^^
[INFO] [stderr] 32 |         private_key_pem: Vec<u8>,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^
[INFO] [stderr] 33 |         installation_id: u64,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `GitHubAuth` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `from_cli_override` is never used
[INFO] [stderr]    --> tests/../src/config.rs:271:12
[INFO] [stderr]     |
[INFO] [stderr] 221 | impl RepoConfig {
[INFO] [stderr]     | --------------- associated function in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 271 |     pub fn from_cli_override(
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `find_config_file` is never used
[INFO] [stderr]    --> tests/../src/config.rs:403:4
[INFO] [stderr]     |
[INFO] [stderr] 403 | fn find_config_file() -> Option<PathBuf> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `dirs_path` is never used
[INFO] [stderr]    --> tests/../src/config.rs:418:4
[INFO] [stderr]     |
[INFO] [stderr] 418 | fn dirs_path() -> PathBuf {
[INFO] [stderr]     |    ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `load` is never used
[INFO] [stderr]    --> tests/../src/config.rs:496:14
[INFO] [stderr]     |
[INFO] [stderr] 496 | pub async fn load(source: &ConfigSource) -> Result<Config, HammurabiError> {
[INFO] [stderr]     |              ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `load_from` is never used
[INFO] [stderr]    --> tests/../src/config.rs:514:8
[INFO] [stderr]     |
[INFO] [stderr] 514 | pub fn load_from(explicit_path: Option<&Path>) -> Result<Config, HammurabiError> {
[INFO] [stderr]     |        ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `load_from_url` is never used
[INFO] [stderr]    --> tests/../src/config.rs:522:14
[INFO] [stderr]     |
[INFO] [stderr] 522 | pub async fn load_from_url(url: &str) -> Result<Config, HammurabiError> {
[INFO] [stderr]     |              ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `read_raw_from_path` is never used
[INFO] [stderr]    --> tests/../src/config.rs:533:4
[INFO] [stderr]     |
[INFO] [stderr] 533 | fn read_raw_from_path(explicit_path: Option<&Path>) -> Result<RawConfig, HammurabiError> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `empty_raw_config` is never used
[INFO] [stderr]    --> tests/../src/config.rs:550:4
[INFO] [stderr]     |
[INFO] [stderr] 550 | fn empty_raw_config() -> RawConfig {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `insert_discord_thread`, `get_discord_issue`, `set_issue_github_number`, `get_issue_by_id`, `get_issue_by_github_number_any_source`, and `update_issue_last_pr_comment` are never used
[INFO] [stderr]    --> tests/../src/db.rs:383:12
[INFO] [stderr]     |
[INFO] [stderr]  32 | impl Database {
[INFO] [stderr]     | ------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 383 |     pub fn insert_discord_thread(
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 419 |     pub fn get_discord_issue(
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 440 |     pub fn set_issue_github_number(
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 457 |     pub fn get_issue_by_id(&self, id: i64) -> Result<Option<TrackedIssue>, HammurabiError> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 473 |     pub fn get_issue_by_github_number_any_source(
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 669 |     pub fn update_issue_last_pr_comment(
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `user_login` is never read
[INFO] [stderr]   --> tests/../src/github.rs:25:9
[INFO] [stderr]    |
[INFO] [stderr] 19 | pub struct GitHubIssue {
[INFO] [stderr]    |            ----------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 25 |     pub user_login: String,
[INFO] [stderr]    |         ^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `GitHubIssue` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> tests/../src/github.rs:95:12
[INFO] [stderr]    |
[INFO] [stderr] 94 | impl OctocrabClient {
[INFO] [stderr]    | ------------------- associated function in this implementation
[INFO] [stderr] 95 |     pub fn new(
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `set_label_adder` is never used
[INFO] [stderr]    --> tests/../src/github.rs:735:16
[INFO] [stderr]     |
[INFO] [stderr] 692 |     impl MockGitHubClient {
[INFO] [stderr]     |     --------------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 735 |         pub fn set_label_adder(&self, issue_number: u64, label: &str, user: &str) {
[INFO] [stderr]     |                ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `AppTokenProvider` is never constructed
[INFO] [stderr]   --> tests/../src/worktree.rs:41:12
[INFO] [stderr]    |
[INFO] [stderr] 41 | pub struct AppTokenProvider {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> tests/../src/worktree.rs:47:12
[INFO] [stderr]    |
[INFO] [stderr] 46 | impl AppTokenProvider {
[INFO] [stderr]    | --------------------- associated function in this implementation
[INFO] [stderr] 47 |     pub fn new(
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `ensure_default_branch` and `fetch_origin` are never used
[INFO] [stderr]   --> tests/../src/worktree.rs:76:14
[INFO] [stderr]    |
[INFO] [stderr] 74 | pub trait WorktreeManager: Send + Sync {
[INFO] [stderr]    |           --------------- methods in this trait
[INFO] [stderr] 75 |     async fn ensure_bare_clone(&self, repo_url: &str) -> Result<PathBuf, HammurabiError>;
[INFO] [stderr] 76 |     async fn ensure_default_branch(&self, default_branch: &str) -> Result<(), HammurabiError>;
[INFO] [stderr]    |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 77 |     async fn fetch_origin(&self) -> Result<(), HammurabiError>;
[INFO] [stderr]    |              ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `reader_alive` is never used
[INFO] [stderr]    --> src/acp/session.rs:323:12
[INFO] [stderr]     |
[INFO] [stderr]  72 | impl Session {
[INFO] [stderr]     | ------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 323 |     pub fn reader_alive(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: method `set_label_adder` is never used
[INFO] [stderr]    --> src/github.rs:735:16
[INFO] [stderr]     |
[INFO] [stderr] 692 |     impl MockGitHubClient {
[INFO] [stderr]     |     --------------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 735 |         pub fn set_label_adder(&self, issue_number: u64, label: &str, user: &str) {
[INFO] [stderr]     |                ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `registry::AgentRegistry`
[INFO] [stderr]   --> tests/../src/agents/mod.rs:31:9
[INFO] [stderr]    |
[INFO] [stderr] 31 | pub use registry::AgentRegistry;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `with_registry` is never used
[INFO] [stderr]   --> tests/../src/agents/acp.rs:69:12
[INFO] [stderr]    |
[INFO] [stderr] 56 | impl AcpAgent {
[INFO] [stderr]    | ------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 69 |     pub fn with_registry(mut self, registry: Arc<AcpSessionRegistry>) -> Self {
[INFO] [stderr]    |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variants `Database`, `GitHub`, and `Worktree` are never constructed
[INFO] [stderr]   --> tests/../src/error.rs:9:5
[INFO] [stderr]    |
[INFO] [stderr]  4 | pub enum HammurabiError {
[INFO] [stderr]    |          -------------- variants in this enum
[INFO] [stderr] ...
[INFO] [stderr]  9 |     Database(String),
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 12 |     GitHub(String),
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 28 |     Worktree(String),
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `HammurabiError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: methods `get_issue_by_github_number_any_source` and `update_issue_last_pr_comment` are never used
[INFO] [stderr]    --> tests/../src/db.rs:473:12
[INFO] [stderr]     |
[INFO] [stderr]  32 | impl Database {
[INFO] [stderr]     | ------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 473 |     pub fn get_issue_by_github_number_any_source(
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 669 |     pub fn update_issue_last_pr_comment(
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `build_agent_registry` is never used
[INFO] [stderr]   --> tests/../src/poller.rs:45:4
[INFO] [stderr]    |
[INFO] [stderr] 45 | fn build_agent_registry(
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `RepoRuntime` is never constructed
[INFO] [stderr]   --> tests/../src/poller.rs:71:8
[INFO] [stderr]    |
[INFO] [stderr] 71 | struct RepoRuntime {
[INFO] [stderr]    |        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `build_discord_client` is never used
[INFO] [stderr]   --> tests/../src/poller.rs:88:10
[INFO] [stderr]    |
[INFO] [stderr] 88 | async fn build_discord_client(cfg: &DiscordChannelConfig) -> Option<Arc<dyn DiscordClient>> {
[INFO] [stderr]    |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `spawn_signal_handler` is never used
[INFO] [stderr]    --> tests/../src/poller.rs:123:4
[INFO] [stderr]     |
[INFO] [stderr] 123 | fn spawn_signal_handler(token: tokio_util::sync::CancellationToken) {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `seed_discord_cursor` is never used
[INFO] [stderr]    --> tests/../src/poller.rs:171:10
[INFO] [stderr]     |
[INFO] [stderr] 171 | async fn seed_discord_cursor(client: &dyn DiscordClient, channel_id: u64) -> Option<u64> {
[INFO] [stderr]     |          ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `run_daemon` is never used
[INFO] [stderr]    --> tests/../src/poller.rs:185:14
[INFO] [stderr]     |
[INFO] [stderr] 185 | pub async fn run_daemon(
[INFO] [stderr]     |              ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `auth_fingerprint` is never used
[INFO] [stderr]    --> tests/../src/poller.rs:489:4
[INFO] [stderr]     |
[INFO] [stderr] 489 | fn auth_fingerprint(auth: &GitHubAuth) -> String {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `build_token_provider` is never used
[INFO] [stderr]    --> tests/../src/poller.rs:507:4
[INFO] [stderr]     |
[INFO] [stderr] 507 | fn build_token_provider(
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `init_repo_runtime` is never used
[INFO] [stderr]    --> tests/../src/poller.rs:536:10
[INFO] [stderr]     |
[INFO] [stderr] 536 | async fn init_repo_runtime(
[INFO] [stderr]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `poll_cycle` is never used
[INFO] [stderr]    --> tests/../src/poller.rs:709:10
[INFO] [stderr]     |
[INFO] [stderr] 709 | async fn poll_cycle(ctx: &TransitionContext) -> Result<(), HammurabiError> {
[INFO] [stderr]     |          ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `process_issue` is never used
[INFO] [stderr]    --> tests/../src/poller.rs:888:10
[INFO] [stderr]     |
[INFO] [stderr] 888 | async fn process_issue(
[INFO] [stderr]     |          ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `handle_spec_drafting` is never used
[INFO] [stderr]    --> tests/../src/poller.rs:933:10
[INFO] [stderr]     |
[INFO] [stderr] 933 | async fn handle_spec_drafting(
[INFO] [stderr]     |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `handle_await_spec_approval` is never used
[INFO] [stderr]    --> tests/../src/poller.rs:979:10
[INFO] [stderr]     |
[INFO] [stderr] 979 | async fn handle_await_spec_approval(
[INFO] [stderr]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `handle_await_spec_approval_github` is never used
[INFO] [stderr]     --> tests/../src/poller.rs:1079:10
[INFO] [stderr]      |
[INFO] [stderr] 1079 | async fn handle_await_spec_approval_github(
[INFO] [stderr]      |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `handle_implementing` is never used
[INFO] [stderr]     --> tests/../src/poller.rs:1154:10
[INFO] [stderr]      |
[INFO] [stderr] 1154 | async fn handle_implementing(
[INFO] [stderr]      |          ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `handle_reviewing` is never used
[INFO] [stderr]     --> tests/../src/poller.rs:1162:10
[INFO] [stderr]      |
[INFO] [stderr] 1162 | async fn handle_reviewing(
[INFO] [stderr]      |          ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `handle_await_pr_approval` is never used
[INFO] [stderr]     --> tests/../src/poller.rs:1169:10
[INFO] [stderr]      |
[INFO] [stderr] 1169 | async fn handle_await_pr_approval(
[INFO] [stderr]      |          ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `handle_failed` is never used
[INFO] [stderr]     --> tests/../src/poller.rs:1234:10
[INFO] [stderr]      |
[INFO] [stderr] 1234 | async fn handle_failed(
[INFO] [stderr]      |          ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `reconcile` is never used
[INFO] [stderr]     --> tests/../src/poller.rs:1284:10
[INFO] [stderr]      |
[INFO] [stderr] 1284 | async fn reconcile(ctx: &TransitionContext) -> Result<(), HammurabiError> {
[INFO] [stderr]      |          ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `hammurabi` (test "integration_lifecycle") generated 23 warnings (run `cargo fix --test "integration_lifecycle" -p hammurabi` to apply 1 suggestion)
[INFO] [stderr] warning: `hammurabi` (test "integration_error_handling") generated 23 warnings (23 duplicates)
[INFO] [stderr] warning: `hammurabi` (bin "hammurabi" test) generated 2 warnings
[INFO] [stderr] warning: `hammurabi` (test "acp_client_integration") generated 8 warnings (5 duplicates) (run `cargo fix --test "acp_client_integration" -p hammurabi` to apply 1 suggestion)
[INFO] [stderr] warning: `hammurabi` (test "integration_discord_lifecycle") generated 41 warnings (21 duplicates)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.50s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/hammurabi-f4a57a256646f032)
[INFO] [stdout] 
[INFO] [stdout] running 252 tests
[INFO] [stdout] test access::tests::all_allows_anyone ... ok
[INFO] [stdout] test access::tests::empty_list_allows_nobody ... ok
[INFO] [stdout] test access::tests::list_matches_listed_user ... ok
[INFO] [stdout] test access::tests::from_raw_list_preserves_users ... ok
[INFO] [stdout] test acp::events::tests::classifies_agent_message_chunk_as_text_delta ... ok
[INFO] [stdout] test acp::events::tests::classifies_agent_thought_chunk_as_thinking ... ok
[INFO] [stdout] test acp::events::tests::classifies_tool_call_update_completed_as_tool_finished_ok ... ok
[INFO] [stdout] test acp::events::tests::classifies_tool_call_update_in_progress_as_tool_started ... ok
[INFO] [stdout] test acp::events::tests::classifies_tool_call_update_failed_as_tool_finished_not_ok ... ok
[INFO] [stdout] test acp::events::tests::missing_tool_call_id_defaults_to_empty ... ok
[INFO] [stdout] test acp::permission::tests::allow_always_wins_over_allow_once ... ok
[INFO] [stdout] test acp::permission::tests::allow_once_wins_over_unknown_kind ... ok
[INFO] [stdout] test acp::permission::tests::all_reject_returns_cancelled ... ok
[INFO] [stdout] test acp::events::tests::unknown_kind_returns_none ... ok
[INFO] [stdout] test acp::permission::tests::build_response_all_reject_returns_cancelled ... ok
[INFO] [stdout] test acp::permission::tests::build_response_missing_options_uses_legacy_fallback ... ok
[INFO] [stdout] test acp::events::tests::missing_update_key_returns_none ... ok
[INFO] [stdout] test acp::permission::tests::build_response_empty_options_returns_cancelled ... ok
[INFO] [stdout] test acp::permission::tests::build_response_none_params_uses_legacy_fallback ... ok
[INFO] [stdout] test acp::permission::tests::claude_option_fixtures_pick_bypass_permissions ... ok
[INFO] [stdout] test acp::events::tests::classifies_tool_call_as_tool_started ... ok
[INFO] [stdout] test acp::permission::tests::build_response_with_options_picks_best ... ok
[INFO] [stdout] test acp::permission::tests::unknown_kind_selected_when_no_allow_present ... ok
[INFO] [stdout] test acp::registry::tests::register_and_unregister_are_balanced ... ok
[INFO] [stdout] test acp::permission::tests::empty_options_returns_cancelled ... ok
[INFO] [stdout] test acp::spawn::tests::expands_partial_refs ... ok
[INFO] [stdout] test acp::spawn::tests::expands_whole_value_ref ... ok
[INFO] [stdout] test acp::registry::tests::kill_all_clears_nothing_by_itself ... ok
[INFO] [stdout] test acp::spawn::tests::non_placeholder_values_pass_through ... ok
[INFO] [stdout] test acp::wire::tests::method_parse_unknown_returns_other ... ok
[INFO] [stdout] test acp::spawn::tests::missing_var_becomes_empty ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_classifies_notification ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_classifies_request ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_classifies_response_error ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_empty_line_is_none ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_classifies_response_ok ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_rejects_missing_id_and_method ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_rejects_malformed_json ... ok
[INFO] [stdout] test acp::wire::tests::request_serialization_includes_params ... ok
[INFO] [stdout] test agents::acp::tests::apply_event_accumulates_text_deltas ... ok
[INFO] [stdout] test agents::acp::tests::apply_event_tracks_tool_lifecycle ... ok
[INFO] [stdout] test agents::acp::tests::default_agent_def_for_each_acp_kind ... ok
[INFO] [stdout] test acp::wire::tests::request_serialization_omits_missing_params ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_assistant_flat_format ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_assistant_message ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_empty_output ... ok
[INFO] [stdout] test acp::spawn::tests::dollar_escapes_itself ... ok
[INFO] [stdout] test access::tests::from_raw_all_short_circuits ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_no_content ... ok
[INFO] [stdout] test acp::registry::tests::non_positive_pgid_ignored ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_token_aggregation ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_unparseable_lines_skipped ... ok
[INFO] [stdout] test agents::mock::tests::test_mock_agent_no_response_errors ... ok
[INFO] [stdout] test agents::mock::tests::test_mock_agent_matches_substring ... ok
[INFO] [stdout] test agents::mock::tests::test_mock_agent_default_response ... ok
[INFO] [stdout] test agents::registry::tests::get_returns_registered_agent ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_multiple_lines ... ok
[INFO] [stdout] test approval::tests::discord_revise_captures_feedback ... ok
[INFO] [stdout] test approval::tests::discord_revise_without_feedback_is_ignored ... ok
[INFO] [stdout] test approval::tests::discord_cancel_is_distinct_outcome ... ok
[INFO] [stdout] test approval::tests::discord_since_id_filters_older_commands ... ok
[INFO] [stdout] test approval::tests::discord_confirm_wins_over_earlier_revise ... ok
[INFO] [stdout] test approval::tests::discord_non_approver_is_ignored ... ok
[INFO] [stdout] test approval::tests::test_approve_after_feedback ... ok
[INFO] [stdout] test approval::tests::test_comment_approve_from_unauthorized_ignored ... ok
[INFO] [stdout] test approval::tests::test_comment_approved_by_approver ... ok
[INFO] [stdout] test approval::tests::test_most_recent_feedback_wins ... ok
[INFO] [stdout] test approval::tests::test_pr_closed ... ok
[INFO] [stdout] test approval::tests::test_feedback_after_approve ... ok
[INFO] [stdout] test approval::tests::test_pr_merged ... ok
[INFO] [stdout] test approval::tests::test_comment_feedback ... ok
[INFO] [stdout] test approval::tests::test_retry_no_comment ... ok
[INFO] [stdout] test approval::tests::test_retry_comment_from_unauthorized ... ok
[INFO] [stdout] test approval::tests::test_since_id_filters ... ok
[INFO] [stdout] test approval::tests::test_pr_pending ... ok
[INFO] [stdout] test approval::tests::test_retry_comment_found ... ok
[INFO] [stdout] test config::tests::config_source_from_raw_detects_scheme ... ok
[INFO] [stdout] test config::tests::fetch_remote_config_rejects_http ... ok
[INFO] [stdout] test config::tests::github_token_file_and_github_token_mutual_exclusion ... ok
[INFO] [stdout] test acp::wire::tests::method_round_trip ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_result_message ... ok
[INFO] [stdout] test config::tests::test_agent_kind_defaults_to_claude_cli ... ok
[INFO] [stdout] test config::tests::test_agents_block_overrides_defaults ... ok
[INFO] [stdout] test config::tests::test_discord_debug_redacts_token ... ok
[INFO] [stdout] test config::tests::test_bypass_label_configured ... ok
[INFO] [stdout] test config::tests::test_bypass_label_default_none ... ok
[INFO] [stdout] test config::tests::test_discord_source_allow_all_and_allow_users_conflicts ... ok
[INFO] [stdout] test config::tests::read_secret_file_strict_mode_behavior ... ok
[INFO] [stdout] test config::tests::test_custom_values ... ok
[INFO] [stdout] test config::tests::read_secret_file_strips_trailing_newline ... ok
[INFO] [stdout] test config::tests::github_token_file_reads_value ... ok
[INFO] [stdout] test config::tests::test_env_override ... ok
[INFO] [stdout] test config::tests::test_discord_source_empty_approvers_inherits_from_repo ... ok
[INFO] [stdout] test config::tests::test_discord_source_duplicate_channel_rejected ... ok
[INFO] [stdout] test config::tests::test_discord_source_parses ... ok
[INFO] [stdout] test config::tests::test_duplicate_repos_rejected ... ok
[INFO] [stdout] test config::tests::test_discord_source_rejects_unknown_repo ... ok
[INFO] [stdout] test config::tests::test_legacy_single_repo_compat ... ok
[INFO] [stdout] test config::tests::test_invalid_repo_format ... ok
[INFO] [stdout] test config::tests::test_global_agent_kind_applies_to_repo ... ok
[INFO] [stdout] test config::tests::test_missing_agents_block_uses_all_defaults ... ok
[INFO] [stdout] test config::tests::test_missing_ai_model ... ok
[INFO] [stdout] test config::tests::test_missing_approvers ... ok
[INFO] [stdout] test config::tests::test_multi_repo_config ... ok
[INFO] [stdout] test config::tests::test_missing_repo ... ok
[INFO] [stdout] test config::tests::test_no_sources_parses_as_empty_vec ... ok
[INFO] [stdout] test config::tests::test_per_task_agent_kind_overrides_repo ... ok
[INFO] [stdout] test config::tests::test_multi_repo_missing_repo_field ... ok
[INFO] [stdout] test config::tests::test_per_repo_agent_kind_overrides_global ... ok
[INFO] [stdout] test config::tests::test_multi_repo_per_repo_overrides ... ok
[INFO] [stdout] test config::tests::test_timeout_defaults ... ok
[INFO] [stdout] test config::tests::test_per_task_overrides ... ok
[INFO] [stdout] test config::tests::test_timeout_custom_values ... ok
[INFO] [stdout] test config::tests::test_timeout_per_task_overrides ... ok
[INFO] [stdout] test config::tests::test_valid_config ... ok
[INFO] [stdout] test db::tests::test_get_issues_by_state ... ok
[INFO] [stdout] test db::tests::test_backfill_repo ... ok
[INFO] [stdout] test db::tests::test_get_all_issues ... ok
[INFO] [stdout] test db::tests::test_get_nonexistent_issue ... ok
[INFO] [stdout] test db::tests::test_bypass_default_false ... ok
[INFO] [stdout] test db::tests::test_increment_retry_count ... ok
[INFO] [stdout] test db::tests::test_insert_populates_source_and_external_id ... ok
[INFO] [stdout] test db::tests::test_get_issue_any_repo ... ok
[INFO] [stdout] test db::tests::test_insert_and_get_issue ... ok
[INFO] [stdout] test db::tests::test_insert_duplicate_issue_ignored ... ok
[INFO] [stdout] test db::tests::test_reset_retry_count ... ok
[INFO] [stdout] test db::tests::test_set_issue_bypass ... ok
[INFO] [stdout] test db::tests::test_same_issue_number_different_repos ... ok
[INFO] [stdout] test db::tests::test_migration_backfills_source_and_external_id ... ok
[INFO] [stdout] test db::tests::test_update_issue_spec_comment ... ok
[INFO] [stdout] test db::tests::test_update_issue_error ... ok
[INFO] [stdout] test db::tests::test_spec_comment_and_last_comment ... ok
[INFO] [stdout] test db::tests::test_update_issue_spec_content ... ok
[INFO] [stdout] test discord::mock::tests::edit_message_records ... ok
[INFO] [stdout] test db::tests::test_update_issue_worktree ... ok
[INFO] [stdout] test db::tests::test_update_issue_state ... ok
[INFO] [stdout] test db::tests::test_usage_log ... ok
[INFO] [stdout] test discord::mock::tests::fetch_new_messages_filters_by_since_id ... ok
[INFO] [stdout] test env_expand::tests::dollar_dollar_escape ... ok
[INFO] [stdout] test env_expand::tests::lone_dollar_preserved ... ok
[INFO] [stdout] test env_expand::tests::mid_string_expansion ... ok
[INFO] [stdout] test discord::mock::tests::start_thread_returns_fresh_id ... ok
[INFO] [stdout] test discord::mock::tests::post_message_records_and_appears_in_thread_fetch ... ok
[INFO] [stdout] test env_expand::tests::multiple_vars_in_one_string ... ok
[INFO] [stdout] test env_expand::tests::unterminated_preserved ... ok
[INFO] [stdout] test env_expand::tests::unknown_var_empty ... ok
[INFO] [stdout] test env_expand::tests::whole_value_expansion ... ok
[INFO] [stdout] test github::tests::test_file_content ... ok
[INFO] [stdout] test github::tests::test_create_issue ... ok
[INFO] [stdout] test github::tests::test_post_and_get_comments ... ok
[INFO] [stdout] test github::tests::test_list_labeled_issues ... ok
[INFO] [stdout] test github::tests::test_pr_status ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_empty ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_none ... ok
[INFO] [stdout] test db::tests::test_get_all_issues_for_repo ... ok
[INFO] [stdout] test db::tests::test_retry_count_default_zero ... ok
[INFO] [stdout] test lock::tests::test_acquire_and_release ... ok
[INFO] [stdout] test models::tests::test_invalid_state_parse ... ok
[INFO] [stdout] test models::tests::test_issue_state_classification ... ok
[INFO] [stdout] test models::tests::test_issue_state_roundtrip ... ok
[INFO] [stdout] test models::tests::test_sort_priority ... ok
[INFO] [stdout] test db::tests::test_update_issue_impl_pr ... ok
[INFO] [stdout] test models::tests::test_source_kind_invalid_parse ... ok
[INFO] [stdout] test models::tests::test_source_kind_roundtrip ... ok
[INFO] [stdout] test lock::tests::test_stale_lock_overwritten ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_failure ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_success ... ok
[INFO] [stdout] test poller::tests::test_reconcile_leaves_open_issues_unchanged ... ok
[INFO] [stdout] test poller::tests::test_reconcile_marks_closed_issue_as_done ... ok
[INFO] [stdout] test agents::acp::tests::default_agent_def_panics_for_claude_cli - should panic ... ok
[INFO] [stdout] test prompts::tests::test_extract_blocking_findings_none_found ... ok
[INFO] [stdout] test prompts::tests::test_claude_md_boundaries ... ok
[INFO] [stdout] test prompts::tests::test_claude_md_for_review_content ... ok
[INFO] [stdout] test prompts::tests::test_extract_blocking_findings ... ok
[INFO] [stdout] test prompts::tests::test_implementation_prompt_content ... ok
[INFO] [stdout] test prompts::tests::test_implementation_prompt_with_feedback ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_bracketed_fail_detected ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_bracketed_pass_detected ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_fail ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_fail_in_summary ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_inline_colon_fail ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_inline_colon_pass ... ok
[INFO] [stdout] test poller::tests::test_reconcile_skips_terminal_state_issues ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_no_false_positive_failsafe ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_no_false_positive_passing ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_no_false_positive_failure ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_template_line_returns_unknown ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_unparseable_returns_unknown ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_pass ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_no_false_positive_password ... ok
[INFO] [stdout] test prompts::tests::test_review_prompt_content ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_best_effort_logs_failure ... ok
[INFO] [stdout] test prompts::tests::test_spec_drafting_prompt_content ... ok
[INFO] [stdout] test prompts::tests::test_spec_drafting_prompt_with_feedback ... ok
[INFO] [stdout] test publisher::tests::github_publisher_post_routes_to_issue_comment ... ok
[INFO] [stdout] test poller::tests::test_reconcile_multiple_issues_mixed_states ... ok
[INFO] [stdout] test prompts::tests::test_spec_drafting_prompt_without_feedback ... ok
[INFO] [stdout] test state_machine::tests::test_await_spec_approved ... ok
[INFO] [stdout] test publisher::tests::multiplex_fans_post_to_all_members ... ok
[INFO] [stdout] test publisher::tests::discord_publisher_post_routes_to_post_message ... ok
[INFO] [stdout] test publisher::tests::discord_publisher_update_routes_to_edit_message ... ok
[INFO] [stdout] test publisher::tests::github_publisher_update_routes_to_update_issue_comment ... ok
[INFO] [stdout] test state_machine::tests::test_await_spec_feedback ... ok
[INFO] [stdout] test state_machine::tests::test_discovered_poll ... ok
[INFO] [stdout] test state_machine::tests::test_feedback_loop_cycle ... ok
[INFO] [stdout] test state_machine::tests::test_invalid_transition ... ok
[INFO] [stdout] test state_machine::tests::test_implementing_poll ... ok
[INFO] [stdout] test state_machine::tests::test_issue_closed_from_any_state ... ok
[INFO] [stdout] test state_machine::tests::test_pr_closed_without_merge ... ok
[INFO] [stdout] test state_machine::tests::test_pr_feedback ... ok
[INFO] [stdout] test state_machine::tests::test_pr_merged ... ok
[INFO] [stdout] test state_machine::tests::test_reset_from_any_state ... ok
[INFO] [stdout] test state_machine::tests::test_retry_from_failed_implementing ... ok
[INFO] [stdout] test state_machine::tests::test_retry_no_previous_state ... ok
[INFO] [stdout] test state_machine::tests::test_reviewing_poll ... ok
[INFO] [stdout] test state_machine::tests::test_transition_error_reviewing ... ok
[INFO] [stdout] test state_machine::tests::test_spec_drafting_poll ... ok
[INFO] [stdout] test state_machine::tests::test_transition_error_active ... ok
[INFO] [stdout] test state_machine::tests::test_transition_error_blocking ... ok
[INFO] [stdout] test state_machine::tests::test_retry_from_failed ... ok
[INFO] [stdout] test transitions::completion::tests::test_no_pr_number_does_nothing ... ok
[INFO] [stdout] test transitions::completion::tests::test_pr_merged_completes_issue ... ok
[INFO] [stdout] test transitions::progress::tests::aggregator_is_silent_when_no_events_arrive ... ok
[INFO] [stdout] test transitions::progress::tests::apply_upgrades_running_to_completed_by_title ... ok
[INFO] [stdout] test transitions::progress::tests::render_collapses_under_details_when_final ... ok
[INFO] [stdout] test transitions::progress::tests::render_open_form_omits_details_tag ... ok
[INFO] [stdout] test transitions::progress::tests::thinking_only_is_visible ... ok
[INFO] [stdout] test transitions::implementing::tests::test_implementing_skips_if_pr_exists_no_feedback ... ok
[INFO] [stdout] test transitions::completion::tests::test_pr_closed_fails_issue ... ok
[INFO] [stdout] test transitions::reviewing::tests::test_review_idempotency_guard_transitions_to_await_pr_approval ... ok
[INFO] [stdout] test transitions::reviewing::tests::test_review_fail_max_iterations_creates_pr ... ok
[INFO] [stdout] test transitions::reviewing::tests::test_review_fail_sends_back_to_implementing ... ok
[INFO] [stdout] test transitions::seed_filename_tests::claude_kinds_seed_claude_md ... ok
[INFO] [stdout] test transitions::seed_filename_tests::codex_seeds_agents_md ... ok
[INFO] [stdout] test transitions::seed_filename_tests::gemini_seeds_gemini_md ... ok
[INFO] [stdout] test transitions::reviewing::tests::test_review_pass_creates_pr ... ok
[INFO] [stdout] test worktree::tests::test_absolute_base_dir_stays_absolute ... ok
[INFO] [stdout] test transitions::spec_drafting::tests::test_spec_drafting_posts_comment ... ok
[INFO] [stdout] test transitions::reviewing::tests::test_review_unparseable_verdict_creates_pr_with_advisory ... ok
[INFO] [stdout] test worktree::tests::test_branch_naming ... ok
[INFO] [stdout] test worktree::tests::test_mock_seed_file ... ok
[INFO] [stdout] test worktree::tests::test_mock_worktree_create ... ok
[INFO] [stdout] test worktree::tests::test_relative_base_dir_becomes_absolute ... ok
[INFO] [stdout] test transitions::implementing::tests::test_implementing_with_feedback_no_pr_uses_impl_branch_and_goes_to_reviewing ... ok
[INFO] [stdout] test transitions::implementing::tests::test_implementing_transitions_to_reviewing ... ok
[INFO] [stdout] test worktree::tests::test_worktree_dir_naming ... ok
[INFO] [stdout] test transitions::implementing::tests::test_implementing_with_feedback_revises ... ok
[INFO] [stdout] test transitions::progress::tests::aggregator_posts_initial_and_final_updates ... ok
[INFO] [stdout] test worktree::tests::test_bare_clone_lands_in_correct_directory ... ok
[INFO] [stdout] test worktree::tests::test_bare_clone_has_origin_refs_after_setup ... ok
[INFO] [stdout] test worktree::tests::test_worktree_created_at_correct_path_and_seedable ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_timeout ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 252 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.06s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/acp_client_integration.rs (/opt/rustwide/target/debug/deps/acp_client_integration-c24889b198430f46)
[INFO] [stdout] 
[INFO] [stdout] running 71 tests
[INFO] [stdout] test acp::events::tests::missing_update_key_returns_none ... ok
[INFO] [stdout] test acp::events::tests::unknown_kind_returns_none ... ok
[INFO] [stdout] test acp::events::tests::classifies_tool_call_update_completed_as_tool_finished_ok ... ok
[INFO] [stdout] test acp::events::tests::classifies_tool_call_update_in_progress_as_tool_started ... ok
[INFO] [stdout] test acp::events::tests::classifies_agent_message_chunk_as_text_delta ... ok
[INFO] [stdout] test acp::events::tests::classifies_tool_call_as_tool_started ... ok
[INFO] [stdout] test acp::events::tests::classifies_agent_thought_chunk_as_thinking ... ok
[INFO] [stdout] test acp::permission::tests::allow_always_wins_over_allow_once ... ok
[INFO] [stdout] test acp::permission::tests::all_reject_returns_cancelled ... ok
[INFO] [stdout] test acp::permission::tests::allow_once_wins_over_unknown_kind ... ok
[INFO] [stdout] test acp::events::tests::classifies_tool_call_update_failed_as_tool_finished_not_ok ... ok
[INFO] [stdout] test acp::events::tests::missing_tool_call_id_defaults_to_empty ... ok
[INFO] [stdout] test acp::permission::tests::build_response_all_reject_returns_cancelled ... ok
[INFO] [stdout] test acp::permission::tests::build_response_empty_options_returns_cancelled ... ok
[INFO] [stdout] test acp::permission::tests::build_response_missing_options_uses_legacy_fallback ... ok
[INFO] [stdout] test acp::permission::tests::empty_options_returns_cancelled ... ok
[INFO] [stdout] test acp::permission::tests::unknown_kind_selected_when_no_allow_present ... ok
[INFO] [stdout] test acp::permission::tests::claude_option_fixtures_pick_bypass_permissions ... ok
[INFO] [stdout] test acp::registry::tests::non_positive_pgid_ignored ... ok
[INFO] [stdout] test acp::permission::tests::build_response_none_params_uses_legacy_fallback ... ok
[INFO] [stdout] test acp::permission::tests::build_response_with_options_picks_best ... ok
[INFO] [stdout] test acp::spawn::tests::expands_partial_refs ... ok
[INFO] [stdout] test acp::spawn::tests::expands_whole_value_ref ... ok
[INFO] [stdout] test acp::spawn::tests::dollar_escapes_itself ... ok
[INFO] [stdout] test acp::spawn::tests::missing_var_becomes_empty ... ok
[INFO] [stdout] test acp::spawn::tests::non_placeholder_values_pass_through ... ok
[INFO] [stdout] test acp::wire::tests::method_parse_unknown_returns_other ... ok
[INFO] [stdout] test acp::wire::tests::method_round_trip ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_classifies_request ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_classifies_notification ... ok
[INFO] [stdout] test acp::registry::tests::register_and_unregister_are_balanced ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_classifies_response_error ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_rejects_missing_id_and_method ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_rejects_malformed_json ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_empty_line_is_none ... ok
[INFO] [stdout] test acp::registry::tests::kill_all_clears_nothing_by_itself ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_classifies_response_ok ... ok
[INFO] [stdout] test acp::wire::tests::request_serialization_omits_missing_params ... ok
[INFO] [stdout] test agents::acp::tests::default_agent_def_for_each_acp_kind ... ok
[INFO] [stdout] test acp::wire::tests::request_serialization_includes_params ... ok
[INFO] [stdout] test agents::acp::tests::apply_event_accumulates_text_deltas ... ok
[INFO] [stdout] test agents::acp::tests::apply_event_tracks_tool_lifecycle ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_assistant_flat_format ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_no_content ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_result_message ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_unparseable_lines_skipped ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_multiple_lines ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_assistant_message ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_token_aggregation ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_empty_output ... ok
[INFO] [stdout] test env_expand::tests::dollar_dollar_escape ... ok
[INFO] [stdout] test agents::mock::tests::test_mock_agent_default_response ... ok
[INFO] [stdout] test agents::mock::tests::test_mock_agent_matches_substring ... ok
[INFO] [stdout] test agents::mock::tests::test_mock_agent_no_response_errors ... ok
[INFO] [stdout] test agents::registry::tests::get_returns_registered_agent ... ok
[INFO] [stdout] test env_expand::tests::lone_dollar_preserved ... ok
[INFO] [stdout] test env_expand::tests::mid_string_expansion ... ok
[INFO] [stdout] test env_expand::tests::unknown_var_empty ... ok
[INFO] [stdout] test env_expand::tests::unterminated_preserved ... ok
[INFO] [stdout] test env_expand::tests::whole_value_expansion ... ok
[INFO] [stdout] test env_expand::tests::multiple_vars_in_one_string ... ok
[INFO] [stdout] test missing_binary_surfaces_config_error ... ok
[INFO] [stdout] test agent_crash_surfaces_as_acp_error ... ok
[INFO] [stdout] test happy_path_returns_accumulated_text_and_usage ... ok
[INFO] [stdout] test session_new_error_propagates ... ok
[INFO] [stdout] test no_content_is_rejected ... ok
[INFO] [stdout] test tool_calls_are_captured_in_summary ... ok
[INFO] [stdout] test permission_request_is_auto_allowed ... ok
[INFO] [stdout] test agents::acp::tests::default_agent_def_panics_for_claude_cli - should panic ... ok
[INFO] [stdout] test overall_timeout_triggers_ai_timeout ... ok
[INFO] [stdout] test stall_timeout_triggers_ai_timeout ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 71 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.06s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/integration_discord_lifecycle.rs (/opt/rustwide/target/debug/deps/integration_discord_lifecycle-61122334a2cc6ac7)
[INFO] [stdout] 
[INFO] [stdout] running 254 tests
[INFO] [stdout] test access::tests::empty_list_allows_nobody ... ok
[INFO] [stdout] test access::tests::from_raw_all_short_circuits ... ok
[INFO] [stdout] test access::tests::list_matches_listed_user ... ok
[INFO] [stdout] test acp::events::tests::classifies_agent_message_chunk_as_text_delta ... ok
[INFO] [stdout] test acp::events::tests::classifies_agent_thought_chunk_as_thinking ... ok
[INFO] [stdout] test acp::events::tests::classifies_tool_call_as_tool_started ... ok
[INFO] [stdout] test access::tests::all_allows_anyone ... ok
[INFO] [stdout] test acp::events::tests::classifies_tool_call_update_failed_as_tool_finished_not_ok ... ok
[INFO] [stdout] test acp::events::tests::classifies_tool_call_update_in_progress_as_tool_started ... ok
[INFO] [stdout] test acp::permission::tests::all_reject_returns_cancelled ... ok
[INFO] [stdout] test acp::permission::tests::allow_always_wins_over_allow_once ... ok
[INFO] [stdout] test acp::events::tests::unknown_kind_returns_none ... ok
[INFO] [stdout] test acp::events::tests::missing_tool_call_id_defaults_to_empty ... ok
[INFO] [stdout] test access::tests::from_raw_list_preserves_users ... ok
[INFO] [stdout] test acp::events::tests::missing_update_key_returns_none ... ok
[INFO] [stdout] test acp::permission::tests::build_response_empty_options_returns_cancelled ... ok
[INFO] [stdout] test acp::events::tests::classifies_tool_call_update_completed_as_tool_finished_ok ... ok
[INFO] [stdout] test acp::permission::tests::build_response_all_reject_returns_cancelled ... ok
[INFO] [stdout] test acp::permission::tests::allow_once_wins_over_unknown_kind ... ok
[INFO] [stdout] test acp::permission::tests::build_response_missing_options_uses_legacy_fallback ... ok
[INFO] [stdout] test acp::permission::tests::build_response_with_options_picks_best ... ok
[INFO] [stdout] test acp::permission::tests::build_response_none_params_uses_legacy_fallback ... ok
[INFO] [stdout] test acp::permission::tests::claude_option_fixtures_pick_bypass_permissions ... ok
[INFO] [stdout] test acp::permission::tests::empty_options_returns_cancelled ... ok
[INFO] [stdout] test acp::permission::tests::unknown_kind_selected_when_no_allow_present ... ok
[INFO] [stdout] test acp::registry::tests::non_positive_pgid_ignored ... ok
[INFO] [stdout] test acp::spawn::tests::dollar_escapes_itself ... ok
[INFO] [stdout] test acp::spawn::tests::expands_partial_refs ... ok
[INFO] [stdout] test acp::registry::tests::kill_all_clears_nothing_by_itself ... ok
[INFO] [stdout] test acp::spawn::tests::non_placeholder_values_pass_through ... ok
[INFO] [stdout] test acp::spawn::tests::expands_whole_value_ref ... ok
[INFO] [stdout] test acp::wire::tests::method_parse_unknown_returns_other ... ok
[INFO] [stdout] test acp::registry::tests::register_and_unregister_are_balanced ... ok
[INFO] [stdout] test acp::spawn::tests::missing_var_becomes_empty ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_classifies_response_error ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_rejects_malformed_json ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_empty_line_is_none ... ok
[INFO] [stdout] test acp::wire::tests::request_serialization_includes_params ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_rejects_missing_id_and_method ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_classifies_response_ok ... ok
[INFO] [stdout] test acp::wire::tests::request_serialization_omits_missing_params ... ok
[INFO] [stdout] test agents::acp::tests::apply_event_accumulates_text_deltas ... ok
[INFO] [stdout] test agents::acp::tests::apply_event_tracks_tool_lifecycle ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_assistant_message ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_empty_output ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_no_content ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_result_message ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_multiple_lines ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_classifies_request ... ok
[INFO] [stdout] test agents::acp::tests::default_agent_def_for_each_acp_kind ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_assistant_flat_format ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_classifies_notification ... ok
[INFO] [stdout] test acp::wire::tests::method_round_trip ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_unparseable_lines_skipped ... ok
[INFO] [stdout] test agents::mock::tests::test_mock_agent_matches_substring ... ok
[INFO] [stdout] test agents::mock::tests::test_mock_agent_no_response_errors ... ok
[INFO] [stdout] test agents::mock::tests::test_mock_agent_default_response ... ok
[INFO] [stdout] test approval::tests::discord_cancel_is_distinct_outcome ... ok
[INFO] [stdout] test approval::tests::discord_confirm_wins_over_earlier_revise ... ok
[INFO] [stdout] test agents::registry::tests::get_returns_registered_agent ... ok
[INFO] [stdout] test approval::tests::discord_revise_captures_feedback ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_token_aggregation ... ok
[INFO] [stdout] test approval::tests::discord_non_approver_is_ignored ... ok
[INFO] [stdout] test approval::tests::discord_revise_without_feedback_is_ignored ... ok
[INFO] [stdout] test approval::tests::test_approve_after_feedback ... ok
[INFO] [stdout] test approval::tests::test_comment_approved_by_approver ... ok
[INFO] [stdout] test approval::tests::discord_since_id_filters_older_commands ... ok
[INFO] [stdout] test approval::tests::test_comment_approve_from_unauthorized_ignored ... ok
[INFO] [stdout] test approval::tests::test_feedback_after_approve ... ok
[INFO] [stdout] test approval::tests::test_pr_pending ... ok
[INFO] [stdout] test approval::tests::test_pr_merged ... ok
[INFO] [stdout] test approval::tests::test_most_recent_feedback_wins ... ok
[INFO] [stdout] test approval::tests::test_comment_feedback ... ok
[INFO] [stdout] test config::tests::config_source_from_raw_detects_scheme ... ok
[INFO] [stdout] test approval::tests::test_retry_comment_found ... ok
[INFO] [stdout] test approval::tests::test_pr_closed ... ok
[INFO] [stdout] test approval::tests::test_since_id_filters ... ok
[INFO] [stdout] test config::tests::github_token_file_and_github_token_mutual_exclusion ... ok
[INFO] [stdout] test approval::tests::test_retry_comment_from_unauthorized ... ok
[INFO] [stdout] test config::tests::fetch_remote_config_rejects_http ... ok
[INFO] [stdout] test config::tests::read_secret_file_strict_mode_behavior ... ok
[INFO] [stdout] test config::tests::read_secret_file_strips_trailing_newline ... ok
[INFO] [stdout] test approval::tests::test_retry_no_comment ... ok
[INFO] [stdout] test config::tests::test_agent_kind_defaults_to_claude_cli ... ok
[INFO] [stdout] test config::tests::test_discord_debug_redacts_token ... ok
[INFO] [stdout] test config::tests::github_token_file_reads_value ... ok
[INFO] [stdout] test config::tests::test_bypass_label_configured ... ok
[INFO] [stdout] test config::tests::test_agents_block_overrides_defaults ... ok
[INFO] [stdout] test config::tests::test_custom_values ... ok
[INFO] [stdout] test config::tests::test_bypass_label_default_none ... ok
[INFO] [stdout] test config::tests::test_discord_source_rejects_unknown_repo ... ok
[INFO] [stdout] test config::tests::test_discord_source_duplicate_channel_rejected ... ok
[INFO] [stdout] test config::tests::test_duplicate_repos_rejected ... ok
[INFO] [stdout] test config::tests::test_discord_source_allow_all_and_allow_users_conflicts ... ok
[INFO] [stdout] test config::tests::test_discord_source_empty_approvers_inherits_from_repo ... ok
[INFO] [stdout] test config::tests::test_discord_source_parses ... ok
[INFO] [stdout] test config::tests::test_env_override ... ok
[INFO] [stdout] test config::tests::test_invalid_repo_format ... ok
[INFO] [stdout] test config::tests::test_legacy_single_repo_compat ... ok
[INFO] [stdout] test config::tests::test_global_agent_kind_applies_to_repo ... ok
[INFO] [stdout] test config::tests::test_missing_agents_block_uses_all_defaults ... ok
[INFO] [stdout] test config::tests::test_missing_approvers ... ok
[INFO] [stdout] test config::tests::test_missing_ai_model ... ok
[INFO] [stdout] test config::tests::test_missing_repo ... ok
[INFO] [stdout] test config::tests::test_multi_repo_missing_repo_field ... ok
[INFO] [stdout] test config::tests::test_no_sources_parses_as_empty_vec ... ok
[INFO] [stdout] test config::tests::test_timeout_custom_values ... ok
[INFO] [stdout] test config::tests::test_per_task_overrides ... ok
[INFO] [stdout] test config::tests::test_per_repo_agent_kind_overrides_global ... ok
[INFO] [stdout] test config::tests::test_multi_repo_config ... ok
[INFO] [stdout] test config::tests::test_timeout_defaults ... ok
[INFO] [stdout] test config::tests::test_per_task_agent_kind_overrides_repo ... ok
[INFO] [stdout] test config::tests::test_multi_repo_per_repo_overrides ... ok
[INFO] [stdout] test config::tests::test_valid_config ... ok
[INFO] [stdout] test config::tests::test_timeout_per_task_overrides ... ok
[INFO] [stdout] test db::tests::test_backfill_repo ... ok
[INFO] [stdout] test db::tests::test_get_nonexistent_issue ... ok
[INFO] [stdout] test db::tests::test_get_all_issues_for_repo ... ok
[INFO] [stdout] test db::tests::test_get_all_issues ... ok
[INFO] [stdout] test db::tests::test_get_issue_any_repo ... ok
[INFO] [stdout] test db::tests::test_get_issues_by_state ... ok
[INFO] [stdout] test db::tests::test_bypass_default_false ... ok
[INFO] [stdout] test db::tests::test_insert_and_get_issue ... ok
[INFO] [stdout] test db::tests::test_insert_duplicate_issue_ignored ... ok
[INFO] [stdout] test db::tests::test_insert_populates_source_and_external_id ... ok
[INFO] [stdout] test db::tests::test_retry_count_default_zero ... ok
[INFO] [stdout] test db::tests::test_increment_retry_count ... ok
[INFO] [stdout] test db::tests::test_reset_retry_count ... ok
[INFO] [stdout] test db::tests::test_spec_comment_and_last_comment ... ok
[INFO] [stdout] test db::tests::test_same_issue_number_different_repos ... ok
[INFO] [stdout] test db::tests::test_update_issue_error ... ok
[INFO] [stdout] test db::tests::test_set_issue_bypass ... ok
[INFO] [stdout] test db::tests::test_migration_backfills_source_and_external_id ... ok
[INFO] [stdout] test db::tests::test_update_issue_impl_pr ... ok
[INFO] [stdout] test discord::mock::tests::fetch_new_messages_filters_by_since_id ... ok
[INFO] [stdout] test discord::mock::tests::edit_message_records ... ok
[INFO] [stdout] test db::tests::test_update_issue_spec_comment ... ok
[INFO] [stdout] test db::tests::test_update_issue_state ... ok
[INFO] [stdout] test discord::mock::tests::start_thread_returns_fresh_id ... ok
[INFO] [stdout] test discord::mock::tests::post_message_records_and_appears_in_thread_fetch ... ok
[INFO] [stdout] test db::tests::test_usage_log ... ok
[INFO] [stdout] test db::tests::test_update_issue_worktree ... ok
[INFO] [stdout] test db::tests::test_update_issue_spec_content ... ok
[INFO] [stdout] test env_expand::tests::lone_dollar_preserved ... ok
[INFO] [stdout] test env_expand::tests::mid_string_expansion ... ok
[INFO] [stdout] test env_expand::tests::multiple_vars_in_one_string ... ok
[INFO] [stdout] test env_expand::tests::whole_value_expansion ... ok
[INFO] [stdout] test env_expand::tests::unknown_var_empty ... ok
[INFO] [stdout] test env_expand::tests::unterminated_preserved ... ok
[INFO] [stdout] test env_expand::tests::dollar_dollar_escape ... ok
[INFO] [stdout] test github::tests::test_list_labeled_issues ... ok
[INFO] [stdout] test github::tests::test_create_issue ... ok
[INFO] [stdout] test github::tests::test_pr_status ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_none ... ok
[INFO] [stdout] test github::tests::test_file_content ... ok
[INFO] [stdout] test github::tests::test_post_and_get_comments ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_empty ... ok
[INFO] [stdout] test lock::tests::test_acquire_and_release ... ok
[INFO] [stdout] test models::tests::test_invalid_state_parse ... ok
[INFO] [stdout] test models::tests::test_issue_state_classification ... ok
[INFO] [stdout] test lock::tests::test_stale_lock_overwritten ... ok
[INFO] [stdout] test models::tests::test_issue_state_roundtrip ... ok
[INFO] [stdout] test models::tests::test_sort_priority ... ok
[INFO] [stdout] test models::tests::test_source_kind_roundtrip ... ok
[INFO] [stdout] test models::tests::test_source_kind_invalid_parse ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_best_effort_logs_failure ... ok
[INFO] [stdout] test poller::tests::test_reconcile_leaves_open_issues_unchanged ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_success ... ok
[INFO] [stdout] test non_allowlisted_user_intake_is_dropped ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_failure ... ok
[INFO] [stdout] test prompts::tests::test_claude_md_for_review_content ... ok
[INFO] [stdout] test prompts::tests::test_extract_blocking_findings ... ok
[INFO] [stdout] test prompts::tests::test_extract_blocking_findings_none_found ... ok
[INFO] [stdout] test prompts::tests::test_claude_md_boundaries ... ok
[INFO] [stdout] test discord_end_to_end_lifecycle ... ok
[INFO] [stdout] test prompts::tests::test_implementation_prompt_with_feedback ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_bracketed_fail_detected ... ok
[INFO] [stdout] test prompts::tests::test_implementation_prompt_content ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_fail ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_bracketed_pass_detected ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_fail_in_summary ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_inline_colon_fail ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_inline_colon_pass ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_no_false_positive_failsafe ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_no_false_positive_failure ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_no_false_positive_passing ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_no_false_positive_password ... ok
[INFO] [stdout] test agents::acp::tests::default_agent_def_panics_for_claude_cli - should panic ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_pass ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_template_line_returns_unknown ... ok
[INFO] [stdout] test prompts::tests::test_review_prompt_content ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_unparseable_returns_unknown ... ok
[INFO] [stdout] test prompts::tests::test_spec_drafting_prompt_content ... ok
[INFO] [stdout] test prompts::tests::test_spec_drafting_prompt_with_feedback ... ok
[INFO] [stdout] test prompts::tests::test_spec_drafting_prompt_without_feedback ... ok
[INFO] [stdout] test poller::tests::test_reconcile_skips_terminal_state_issues ... ok
[INFO] [stdout] test publisher::tests::discord_publisher_post_routes_to_post_message ... ok
[INFO] [stdout] test publisher::tests::github_publisher_post_routes_to_issue_comment ... ok
[INFO] [stdout] test poller::tests::test_reconcile_marks_closed_issue_as_done ... ok
[INFO] [stdout] test state_machine::tests::test_await_spec_feedback ... ok
[INFO] [stdout] test publisher::tests::github_publisher_update_routes_to_update_issue_comment ... ok
[INFO] [stdout] test state_machine::tests::test_await_spec_approved ... ok
[INFO] [stdout] test publisher::tests::multiplex_fans_post_to_all_members ... ok
[INFO] [stdout] test publisher::tests::discord_publisher_update_routes_to_edit_message ... ok
[INFO] [stdout] test poller::tests::test_reconcile_multiple_issues_mixed_states ... ok
[INFO] [stdout] test state_machine::tests::test_discovered_poll ... ok
[INFO] [stdout] test state_machine::tests::test_feedback_loop_cycle ... ok
[INFO] [stdout] test state_machine::tests::test_implementing_poll ... ok
[INFO] [stdout] test state_machine::tests::test_issue_closed_from_any_state ... ok
[INFO] [stdout] test state_machine::tests::test_invalid_transition ... ok
[INFO] [stdout] test state_machine::tests::test_pr_merged ... ok
[INFO] [stdout] test state_machine::tests::test_pr_closed_without_merge ... ok
[INFO] [stdout] test state_machine::tests::test_pr_feedback ... ok
[INFO] [stdout] test state_machine::tests::test_retry_from_failed ... ok
[INFO] [stdout] test state_machine::tests::test_reset_from_any_state ... ok
[INFO] [stdout] test state_machine::tests::test_retry_no_previous_state ... ok
[INFO] [stdout] test state_machine::tests::test_retry_from_failed_implementing ... ok
[INFO] [stdout] test state_machine::tests::test_transition_error_active ... ok
[INFO] [stdout] test state_machine::tests::test_spec_drafting_poll ... ok
[INFO] [stdout] test state_machine::tests::test_reviewing_poll ... ok
[INFO] [stdout] test state_machine::tests::test_transition_error_blocking ... ok
[INFO] [stdout] test state_machine::tests::test_transition_error_reviewing ... ok
[INFO] [stdout] test transitions::completion::tests::test_pr_merged_completes_issue ... ok
[INFO] [stdout] test transitions::progress::tests::aggregator_is_silent_when_no_events_arrive ... ok
[INFO] [stdout] test transitions::implementing::tests::test_implementing_skips_if_pr_exists_no_feedback ... ok
[INFO] [stdout] test transitions::completion::tests::test_pr_closed_fails_issue ... ok
[INFO] [stdout] test transitions::completion::tests::test_no_pr_number_does_nothing ... ok
[INFO] [stdout] test transitions::progress::tests::render_collapses_under_details_when_final ... ok
[INFO] [stdout] test transitions::progress::tests::render_open_form_omits_details_tag ... ok
[INFO] [stdout] test transitions::progress::tests::thinking_only_is_visible ... ok
[INFO] [stdout] test transitions::progress::tests::apply_upgrades_running_to_completed_by_title ... ok
[INFO] [stdout] test transitions::implementing::tests::test_implementing_transitions_to_reviewing ... ok
[INFO] [stdout] test transitions::implementing::tests::test_implementing_with_feedback_revises ... ok
[INFO] [stdout] test transitions::reviewing::tests::test_review_fail_max_iterations_creates_pr ... ok
[INFO] [stdout] test transitions::seed_filename_tests::claude_kinds_seed_claude_md ... ok
[INFO] [stdout] test transitions::reviewing::tests::test_review_pass_creates_pr ... ok
[INFO] [stdout] test transitions::seed_filename_tests::codex_seeds_agents_md ... ok
[INFO] [stdout] test transitions::seed_filename_tests::gemini_seeds_gemini_md ... ok
[INFO] [stdout] test worktree::tests::test_absolute_base_dir_stays_absolute ... ok
[INFO] [stdout] test transitions::reviewing::tests::test_review_idempotency_guard_transitions_to_await_pr_approval ... ok
[INFO] [stdout] test transitions::implementing::tests::test_implementing_with_feedback_no_pr_uses_impl_branch_and_goes_to_reviewing ... ok
[INFO] [stdout] test worktree::tests::test_branch_naming ... ok
[INFO] [stdout] test worktree::tests::test_mock_seed_file ... ok
[INFO] [stdout] test transitions::reviewing::tests::test_review_fail_sends_back_to_implementing ... ok
[INFO] [stdout] test worktree::tests::test_relative_base_dir_becomes_absolute ... ok
[INFO] [stdout] test transitions::reviewing::tests::test_review_unparseable_verdict_creates_pr_with_advisory ... ok
[INFO] [stdout] test transitions::spec_drafting::tests::test_spec_drafting_posts_comment ... ok
[INFO] [stdout] test worktree::tests::test_worktree_dir_naming ... ok
[INFO] [stdout] test worktree::tests::test_mock_worktree_create ... ok
[INFO] [stdout] test transitions::progress::tests::aggregator_posts_initial_and_final_updates ... ok
[INFO] [stdout] test worktree::tests::test_bare_clone_lands_in_correct_directory ... ok
[INFO] [stdout] test worktree::tests::test_bare_clone_has_origin_refs_after_setup ... ok
[INFO] [stdout] test worktree::tests::test_worktree_created_at_correct_path_and_seedable ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_timeout ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 254 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.05s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/integration_error_handling.rs (/opt/rustwide/target/debug/deps/integration_error_handling-ff3d330c5e30e682)
[INFO] [stdout] 
[INFO] [stdout] running 249 tests
[INFO] [stdout] test access::tests::all_allows_anyone ... ok
[INFO] [stdout] test access::tests::empty_list_allows_nobody ... ok
[INFO] [stdout] test access::tests::from_raw_all_short_circuits ... ok
[INFO] [stdout] test access::tests::list_matches_listed_user ... ok
[INFO] [stdout] test access::tests::from_raw_list_preserves_users ... ok
[INFO] [stdout] test acp::events::tests::classifies_tool_call_as_tool_started ... ok
[INFO] [stdout] test acp::events::tests::classifies_tool_call_update_completed_as_tool_finished_ok ... ok
[INFO] [stdout] test acp::events::tests::classifies_tool_call_update_in_progress_as_tool_started ... ok
[INFO] [stdout] test acp::events::tests::classifies_tool_call_update_failed_as_tool_finished_not_ok ... ok
[INFO] [stdout] test acp::events::tests::classifies_agent_message_chunk_as_text_delta ... ok
[INFO] [stdout] test acp::events::tests::unknown_kind_returns_none ... ok
[INFO] [stdout] test acp::permission::tests::allow_once_wins_over_unknown_kind ... ok
[INFO] [stdout] test acp::permission::tests::allow_always_wins_over_allow_once ... ok
[INFO] [stdout] test acp::events::tests::missing_update_key_returns_none ... ok
[INFO] [stdout] test acp::events::tests::classifies_agent_thought_chunk_as_thinking ... ok
[INFO] [stdout] test acp::permission::tests::all_reject_returns_cancelled ... ok
[INFO] [stdout] test acp::permission::tests::build_response_missing_options_uses_legacy_fallback ... ok
[INFO] [stdout] test acp::permission::tests::build_response_all_reject_returns_cancelled ... ok
[INFO] [stdout] test acp::permission::tests::build_response_none_params_uses_legacy_fallback ... ok
[INFO] [stdout] test acp::events::tests::missing_tool_call_id_defaults_to_empty ... ok
[INFO] [stdout] test acp::permission::tests::build_response_empty_options_returns_cancelled ... ok
[INFO] [stdout] test acp::permission::tests::build_response_with_options_picks_best ... ok
[INFO] [stdout] test acp::permission::tests::claude_option_fixtures_pick_bypass_permissions ... ok
[INFO] [stdout] test acp::permission::tests::unknown_kind_selected_when_no_allow_present ... ok
[INFO] [stdout] test acp::spawn::tests::dollar_escapes_itself ... ok
[INFO] [stdout] test acp::spawn::tests::expands_partial_refs ... ok
[INFO] [stdout] test acp::registry::tests::register_and_unregister_are_balanced ... ok
[INFO] [stdout] test acp::registry::tests::kill_all_clears_nothing_by_itself ... ok
[INFO] [stdout] test acp::permission::tests::empty_options_returns_cancelled ... ok
[INFO] [stdout] test acp::spawn::tests::expands_whole_value_ref ... ok
[INFO] [stdout] test acp::wire::tests::method_round_trip ... ok
[INFO] [stdout] test acp::spawn::tests::missing_var_becomes_empty ... ok
[INFO] [stdout] test acp::registry::tests::non_positive_pgid_ignored ... ok
[INFO] [stdout] test acp::spawn::tests::non_placeholder_values_pass_through ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_classifies_request ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_classifies_notification ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_classifies_response_error ... ok
[INFO] [stdout] test acp::wire::tests::method_parse_unknown_returns_other ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_classifies_response_ok ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_empty_line_is_none ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_rejects_missing_id_and_method ... ok
[INFO] [stdout] test agents::acp::tests::apply_event_accumulates_text_deltas ... ok
[INFO] [stdout] test agents::acp::tests::default_agent_def_for_each_acp_kind ... ok
[INFO] [stdout] test acp::wire::tests::request_serialization_omits_missing_params ... ok
[INFO] [stdout] test agents::acp::tests::apply_event_tracks_tool_lifecycle ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_empty_output ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_rejects_malformed_json ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_assistant_flat_format ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_assistant_message ... ok
[INFO] [stdout] test acp::wire::tests::request_serialization_includes_params ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_no_content ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_multiple_lines ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_result_message ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_unparseable_lines_skipped ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_token_aggregation ... ok
[INFO] [stdout] test agents::mock::tests::test_mock_agent_matches_substring ... ok
[INFO] [stdout] test agents::mock::tests::test_mock_agent_default_response ... ok
[INFO] [stdout] test agents::registry::tests::get_returns_registered_agent ... ok
[INFO] [stdout] test approval::tests::discord_confirm_wins_over_earlier_revise ... ok
[INFO] [stdout] test approval::tests::discord_revise_captures_feedback ... ok
[INFO] [stdout] test approval::tests::discord_cancel_is_distinct_outcome ... ok
[INFO] [stdout] test approval::tests::discord_non_approver_is_ignored ... ok
[INFO] [stdout] test approval::tests::discord_revise_without_feedback_is_ignored ... ok
[INFO] [stdout] test agents::mock::tests::test_mock_agent_no_response_errors ... ok
[INFO] [stdout] test approval::tests::discord_since_id_filters_older_commands ... ok
[INFO] [stdout] test approval::tests::test_approve_after_feedback ... ok
[INFO] [stdout] test approval::tests::test_comment_approve_from_unauthorized_ignored ... ok
[INFO] [stdout] test approval::tests::test_most_recent_feedback_wins ... ok
[INFO] [stdout] test approval::tests::test_pr_closed ... ok
[INFO] [stdout] test approval::tests::test_pr_merged ... ok
[INFO] [stdout] test approval::tests::test_comment_approved_by_approver ... ok
[INFO] [stdout] test approval::tests::test_comment_feedback ... ok
[INFO] [stdout] test approval::tests::test_feedback_after_approve ... ok
[INFO] [stdout] test approval::tests::test_retry_no_comment ... ok
[INFO] [stdout] test approval::tests::test_pr_pending ... ok
[INFO] [stdout] test approval::tests::test_retry_comment_found ... ok
[INFO] [stdout] test approval::tests::test_since_id_filters ... ok
[INFO] [stdout] test config::tests::config_source_from_raw_detects_scheme ... ok
[INFO] [stdout] test config::tests::read_secret_file_strict_mode_behavior ... ok
[INFO] [stdout] test config::tests::fetch_remote_config_rejects_http ... ok
[INFO] [stdout] test config::tests::read_secret_file_strips_trailing_newline ... ok
[INFO] [stdout] test config::tests::github_token_file_and_github_token_mutual_exclusion ... ok
[INFO] [stdout] test config::tests::github_token_file_reads_value ... ok
[INFO] [stdout] test approval::tests::test_retry_comment_from_unauthorized ... ok
[INFO] [stdout] test config::tests::test_bypass_label_configured ... ok
[INFO] [stdout] test config::tests::test_custom_values ... ok
[INFO] [stdout] test config::tests::test_agent_kind_defaults_to_claude_cli ... ok
[INFO] [stdout] test config::tests::test_bypass_label_default_none ... ok
[INFO] [stdout] test config::tests::test_agents_block_overrides_defaults ... ok
[INFO] [stdout] test config::tests::test_discord_debug_redacts_token ... ok
[INFO] [stdout] test config::tests::test_discord_source_empty_approvers_inherits_from_repo ... ok
[INFO] [stdout] test config::tests::test_discord_source_duplicate_channel_rejected ... ok
[INFO] [stdout] test config::tests::test_discord_source_allow_all_and_allow_users_conflicts ... ok
[INFO] [stdout] test config::tests::test_discord_source_parses ... ok
[INFO] [stdout] test config::tests::test_global_agent_kind_applies_to_repo ... ok
[INFO] [stdout] test config::tests::test_discord_source_rejects_unknown_repo ... ok
[INFO] [stdout] test config::tests::test_invalid_repo_format ... ok
[INFO] [stdout] test config::tests::test_duplicate_repos_rejected ... ok
[INFO] [stdout] test config::tests::test_legacy_single_repo_compat ... ok
[INFO] [stdout] test config::tests::test_env_override ... ok
[INFO] [stdout] test config::tests::test_missing_agents_block_uses_all_defaults ... ok
[INFO] [stdout] test config::tests::test_missing_approvers ... ok
[INFO] [stdout] test config::tests::test_missing_ai_model ... ok
[INFO] [stdout] test config::tests::test_multi_repo_config ... ok
[INFO] [stdout] test config::tests::test_multi_repo_missing_repo_field ... ok
[INFO] [stdout] test config::tests::test_multi_repo_per_repo_overrides ... ok
[INFO] [stdout] test config::tests::test_no_sources_parses_as_empty_vec ... ok
[INFO] [stdout] test config::tests::test_per_repo_agent_kind_overrides_global ... ok
[INFO] [stdout] test config::tests::test_per_task_agent_kind_overrides_repo ... ok
[INFO] [stdout] test config::tests::test_timeout_custom_values ... ok
[INFO] [stdout] test config::tests::test_timeout_per_task_overrides ... ok
[INFO] [stdout] test config::tests::test_timeout_defaults ... ok
[INFO] [stdout] test config::tests::test_per_task_overrides ... ok
[INFO] [stdout] test config::tests::test_valid_config ... ok
[INFO] [stdout] test config::tests::test_missing_repo ... ok
[INFO] [stdout] test db::tests::test_get_issues_by_state ... ok
[INFO] [stdout] test db::tests::test_bypass_default_false ... ok
[INFO] [stdout] test db::tests::test_get_all_issues_for_repo ... ok
[INFO] [stdout] test db::tests::test_backfill_repo ... ok
[INFO] [stdout] test db::tests::test_get_issue_any_repo ... ok
[INFO] [stdout] test db::tests::test_insert_and_get_issue ... ok
[INFO] [stdout] test db::tests::test_get_nonexistent_issue ... ok
[INFO] [stdout] test db::tests::test_get_all_issues ... ok
[INFO] [stdout] test db::tests::test_reset_retry_count ... ok
[INFO] [stdout] test db::tests::test_insert_duplicate_issue_ignored ... ok
[INFO] [stdout] test db::tests::test_increment_retry_count ... ok
[INFO] [stdout] test db::tests::test_insert_populates_source_and_external_id ... ok
[INFO] [stdout] test db::tests::test_set_issue_bypass ... ok
[INFO] [stdout] test db::tests::test_same_issue_number_different_repos ... ok
[INFO] [stdout] test db::tests::test_retry_count_default_zero ... ok
[INFO] [stdout] test db::tests::test_spec_comment_and_last_comment ... ok
[INFO] [stdout] test db::tests::test_update_issue_error ... ok
[INFO] [stdout] test db::tests::test_update_issue_worktree ... ok
[INFO] [stdout] test db::tests::test_migration_backfills_source_and_external_id ... ok
[INFO] [stdout] test db::tests::test_update_issue_impl_pr ... ok
[INFO] [stdout] test db::tests::test_update_issue_spec_content ... ok
[INFO] [stdout] test db::tests::test_update_issue_state ... ok
[INFO] [stdout] test env_expand::tests::dollar_dollar_escape ... ok
[INFO] [stdout] test env_expand::tests::lone_dollar_preserved ... ok
[INFO] [stdout] test discord::mock::tests::post_message_records_and_appears_in_thread_fetch ... ok
[INFO] [stdout] test discord::mock::tests::edit_message_records ... ok
[INFO] [stdout] test db::tests::test_update_issue_spec_comment ... ok
[INFO] [stdout] test env_expand::tests::mid_string_expansion ... ok
[INFO] [stdout] test env_expand::tests::unknown_var_empty ... ok
[INFO] [stdout] test env_expand::tests::multiple_vars_in_one_string ... ok
[INFO] [stdout] test env_expand::tests::unterminated_preserved ... ok
[INFO] [stdout] test env_expand::tests::whole_value_expansion ... ok
[INFO] [stdout] test github::tests::test_create_issue ... ok
[INFO] [stdout] test github::tests::test_file_content ... ok
[INFO] [stdout] test github::tests::test_list_labeled_issues ... ok
[INFO] [stdout] test db::tests::test_usage_log ... ok
[INFO] [stdout] test discord::mock::tests::fetch_new_messages_filters_by_since_id ... ok
[INFO] [stdout] test discord::mock::tests::start_thread_returns_fresh_id ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_empty ... ok
[INFO] [stdout] test github::tests::test_pr_status ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_none ... ok
[INFO] [stdout] test github::tests::test_post_and_get_comments ... ok
[INFO] [stdout] test models::tests::test_invalid_state_parse ... ok
[INFO] [stdout] test models::tests::test_issue_state_classification ... ok
[INFO] [stdout] test models::tests::test_source_kind_invalid_parse ... ok
[INFO] [stdout] test models::tests::test_sort_priority ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_best_effort_logs_failure ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_failure ... ok
[INFO] [stdout] test models::tests::test_issue_state_roundtrip ... ok
[INFO] [stdout] test prompts::tests::test_claude_md_boundaries ... ok
[INFO] [stdout] test prompts::tests::test_claude_md_for_review_content ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_success ... ok
[INFO] [stdout] test prompts::tests::test_extract_blocking_findings ... ok
[INFO] [stdout] test prompts::tests::test_extract_blocking_findings_none_found ... ok
[INFO] [stdout] test prompts::tests::test_implementation_prompt_content ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_bracketed_pass_detected ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_bracketed_fail_detected ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_fail ... ok
[INFO] [stdout] test models::tests::test_source_kind_roundtrip ... ok
[INFO] [stdout] test prompts::tests::test_implementation_prompt_with_feedback ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_no_false_positive_failure ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_fail_in_summary ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_no_false_positive_passing ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_no_false_positive_password ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_inline_colon_fail ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_inline_colon_pass ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_pass ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_no_false_positive_failsafe ... ok
[INFO] [stdout] test prompts::tests::test_spec_drafting_prompt_content ... ok
[INFO] [stdout] test prompts::tests::test_spec_drafting_prompt_with_feedback ... ok
[INFO] [stdout] test prompts::tests::test_spec_drafting_prompt_without_feedback ... ok
[INFO] [stdout] test publisher::tests::discord_publisher_update_routes_to_edit_message ... ok
[INFO] [stdout] test publisher::tests::discord_publisher_post_routes_to_post_message ... ok
[INFO] [stdout] test publisher::tests::github_publisher_update_routes_to_update_issue_comment ... ok
[INFO] [stdout] test publisher::tests::github_publisher_post_routes_to_issue_comment ... ok
[INFO] [stdout] test state_machine::tests::test_await_spec_feedback ... ok
[INFO] [stdout] test publisher::tests::multiplex_fans_post_to_all_members ... ok
[INFO] [stdout] test state_machine::tests::test_discovered_poll ... ok
[INFO] [stdout] test state_machine::tests::test_await_spec_approved ... ok
[INFO] [stdout] test state_machine::tests::test_feedback_loop_cycle ... ok
[INFO] [stdout] test state_machine::tests::test_invalid_transition ... ok
[INFO] [stdout] test state_machine::tests::test_implementing_poll ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_template_line_returns_unknown ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_unparseable_returns_unknown ... ok
[INFO] [stdout] test prompts::tests::test_review_prompt_content ... ok
[INFO] [stdout] test state_machine::tests::test_issue_closed_from_any_state ... ok
[INFO] [stdout] test state_machine::tests::test_pr_feedback ... ok
[INFO] [stdout] test state_machine::tests::test_pr_closed_without_merge ... ok
[INFO] [stdout] test state_machine::tests::test_pr_merged ... ok
[INFO] [stdout] test state_machine::tests::test_reset_from_any_state ... ok
[INFO] [stdout] test state_machine::tests::test_retry_from_failed ... ok
[INFO] [stdout] test state_machine::tests::test_retry_from_failed_implementing ... ok
[INFO] [stdout] test state_machine::tests::test_retry_no_previous_state ... ok
[INFO] [stdout] test state_machine::tests::test_reviewing_poll ... ok
[INFO] [stdout] test state_machine::tests::test_spec_drafting_poll ... ok
[INFO] [stdout] test state_machine::tests::test_transition_error_blocking ... ok
[INFO] [stdout] test state_machine::tests::test_transition_error_reviewing ... ok
[INFO] [stdout] test test_pr_closed_without_merge ... ok
[INFO] [stdout] test state_machine::tests::test_transition_error_active ... ok
[INFO] [stdout] test agents::acp::tests::default_agent_def_panics_for_claude_cli - should panic ... ok
[INFO] [stdout] test transitions::completion::tests::test_no_pr_number_does_nothing ... ok
[INFO] [stdout] test transitions::completion::tests::test_pr_merged_completes_issue ... ok
[INFO] [stdout] test transitions::implementing::tests::test_implementing_skips_if_pr_exists_no_feedback ... ok
[INFO] [stdout] test transitions::completion::tests::test_pr_closed_fails_issue ... ok
[INFO] [stdout] test transitions::progress::tests::aggregator_is_silent_when_no_events_arrive ... ok
[INFO] [stdout] test transitions::progress::tests::apply_upgrades_running_to_completed_by_title ... ok
[INFO] [stdout] test transitions::progress::tests::render_collapses_under_details_when_final ... ok
[INFO] [stdout] test transitions::progress::tests::render_open_form_omits_details_tag ... ok
[INFO] [stdout] test transitions::progress::tests::thinking_only_is_visible ... ok
[INFO] [stdout] test test_retry_after_spec_failure ... ok
[INFO] [stdout] test transitions::implementing::tests::test_implementing_transitions_to_reviewing ... ok
[INFO] [stdout] test transitions::reviewing::tests::test_review_idempotency_guard_transitions_to_await_pr_approval ... ok
[INFO] [stdout] test transitions::reviewing::tests::test_review_fail_sends_back_to_implementing ... ok
[INFO] [stdout] test transitions::reviewing::tests::test_review_fail_max_iterations_creates_pr ... ok
[INFO] [stdout] test transitions::seed_filename_tests::claude_kinds_seed_claude_md ... ok
[INFO] [stdout] test transitions::seed_filename_tests::codex_seeds_agents_md ... ok
[INFO] [stdout] test transitions::seed_filename_tests::gemini_seeds_gemini_md ... ok
[INFO] [stdout] test transitions::implementing::tests::test_implementing_with_feedback_no_pr_uses_impl_branch_and_goes_to_reviewing ... ok
[INFO] [stdout] test worktree::tests::test_absolute_base_dir_stays_absolute ... ok
[INFO] [stdout] test transitions::implementing::tests::test_implementing_with_feedback_revises ... ok
[INFO] [stdout] test transitions::reviewing::tests::test_review_unparseable_verdict_creates_pr_with_advisory ... ok
[INFO] [stdout] test worktree::tests::test_branch_naming ... ok
[INFO] [stdout] test transitions::spec_drafting::tests::test_spec_drafting_posts_comment ... ok
[INFO] [stdout] test worktree::tests::test_mock_worktree_create ... ok
[INFO] [stdout] test worktree::tests::test_mock_seed_file ... ok
[INFO] [stdout] test worktree::tests::test_relative_base_dir_becomes_absolute ... ok
[INFO] [stdout] test worktree::tests::test_worktree_dir_naming ... ok
[INFO] [stdout] test transitions::reviewing::tests::test_review_pass_creates_pr ... ok
[INFO] [stdout] test test_implementation_failure_and_retry ... ok
[INFO] [stdout] test transitions::progress::tests::aggregator_posts_initial_and_final_updates ... ok
[INFO] [stdout] test worktree::tests::test_worktree_created_at_correct_path_and_seedable ... ok
[INFO] [stdout] test worktree::tests::test_bare_clone_has_origin_refs_after_setup ... ok
[INFO] [stdout] test worktree::tests::test_bare_clone_lands_in_correct_directory ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_timeout ... ok
[INFO] [stderr]      Running tests/integration_lifecycle.rs (/opt/rustwide/target/debug/deps/integration_lifecycle-b31b519fd0377ab6)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 249 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.04s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 249 tests
[INFO] [stdout] test access::tests::all_allows_anyone ... ok
[INFO] [stdout] test access::tests::from_raw_all_short_circuits ... ok
[INFO] [stdout] test acp::events::tests::classifies_agent_message_chunk_as_text_delta ... ok
[INFO] [stdout] test acp::events::tests::classifies_agent_thought_chunk_as_thinking ... ok
[INFO] [stdout] test access::tests::from_raw_list_preserves_users ... ok
[INFO] [stdout] test acp::events::tests::classifies_tool_call_as_tool_started ... ok
[INFO] [stdout] test acp::events::tests::classifies_tool_call_update_completed_as_tool_finished_ok ... ok
[INFO] [stdout] test acp::events::tests::classifies_tool_call_update_failed_as_tool_finished_not_ok ... ok
[INFO] [stdout] test acp::events::tests::missing_tool_call_id_defaults_to_empty ... ok
[INFO] [stdout] test acp::permission::tests::all_reject_returns_cancelled ... ok
[INFO] [stdout] test acp::events::tests::unknown_kind_returns_none ... ok
[INFO] [stdout] test acp::permission::tests::allow_always_wins_over_allow_once ... ok
[INFO] [stdout] test access::tests::empty_list_allows_nobody ... ok
[INFO] [stdout] test acp::events::tests::missing_update_key_returns_none ... ok
[INFO] [stdout] test acp::permission::tests::allow_once_wins_over_unknown_kind ... ok
[INFO] [stdout] test acp::permission::tests::build_response_none_params_uses_legacy_fallback ... ok
[INFO] [stdout] test acp::permission::tests::build_response_empty_options_returns_cancelled ... ok
[INFO] [stdout] test acp::permission::tests::build_response_all_reject_returns_cancelled ... ok
[INFO] [stdout] test acp::permission::tests::build_response_missing_options_uses_legacy_fallback ... ok
[INFO] [stdout] test acp::permission::tests::claude_option_fixtures_pick_bypass_permissions ... ok
[INFO] [stdout] test acp::permission::tests::build_response_with_options_picks_best ... ok
[INFO] [stdout] test acp::permission::tests::empty_options_returns_cancelled ... ok
[INFO] [stdout] test acp::spawn::tests::dollar_escapes_itself ... ok
[INFO] [stdout] test access::tests::list_matches_listed_user ... ok
[INFO] [stdout] test acp::registry::tests::register_and_unregister_are_balanced ... ok
[INFO] [stdout] test acp::registry::tests::kill_all_clears_nothing_by_itself ... ok
[INFO] [stdout] test acp::spawn::tests::expands_partial_refs ... ok
[INFO] [stdout] test acp::permission::tests::unknown_kind_selected_when_no_allow_present ... ok
[INFO] [stdout] test acp::events::tests::classifies_tool_call_update_in_progress_as_tool_started ... ok
[INFO] [stdout] test acp::registry::tests::non_positive_pgid_ignored ... ok
[INFO] [stdout] test acp::wire::tests::method_parse_unknown_returns_other ... ok
[INFO] [stdout] test acp::wire::tests::method_round_trip ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_classifies_notification ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_classifies_request ... ok
[INFO] [stdout] test acp::spawn::tests::missing_var_becomes_empty ... ok
[INFO] [stdout] test acp::spawn::tests::expands_whole_value_ref ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_classifies_response_error ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_rejects_malformed_json ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_rejects_missing_id_and_method ... ok
[INFO] [stdout] test agents::acp::tests::apply_event_accumulates_text_deltas ... ok
[INFO] [stdout] test acp::wire::tests::request_serialization_includes_params ... ok
[INFO] [stdout] test acp::wire::tests::request_serialization_omits_missing_params ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_assistant_flat_format ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_assistant_message ... ok
[INFO] [stdout] test agents::acp::tests::apply_event_tracks_tool_lifecycle ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_classifies_response_ok ... ok
[INFO] [stdout] test acp::wire::tests::parse_frame_empty_line_is_none ... ok
[INFO] [stdout] test agents::acp::tests::default_agent_def_for_each_acp_kind ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_multiple_lines ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_unparseable_lines_skipped ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_token_aggregation ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_empty_output ... ok
[INFO] [stdout] test agents::registry::tests::get_returns_registered_agent ... ok
[INFO] [stdout] test agents::mock::tests::test_mock_agent_no_response_errors ... ok
[INFO] [stdout] test agents::mock::tests::test_mock_agent_matches_substring ... ok
[INFO] [stdout] test agents::mock::tests::test_mock_agent_default_response ... ok
[INFO] [stdout] test approval::tests::discord_non_approver_is_ignored ... ok
[INFO] [stdout] test approval::tests::discord_revise_without_feedback_is_ignored ... ok
[INFO] [stdout] test approval::tests::discord_since_id_filters_older_commands ... ok
[INFO] [stdout] test acp::spawn::tests::non_placeholder_values_pass_through ... ok
[INFO] [stdout] test approval::tests::test_approve_after_feedback ... ok
[INFO] [stdout] test approval::tests::discord_revise_captures_feedback ... ok
[INFO] [stdout] test approval::tests::test_comment_approve_from_unauthorized_ignored ... ok
[INFO] [stdout] test approval::tests::discord_confirm_wins_over_earlier_revise ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_no_content ... ok
[INFO] [stdout] test approval::tests::test_comment_approved_by_approver ... ok
[INFO] [stdout] test approval::tests::test_most_recent_feedback_wins ... ok
[INFO] [stdout] test approval::tests::test_feedback_after_approve ... ok
[INFO] [stdout] test approval::tests::test_comment_feedback ... ok
[INFO] [stdout] test approval::tests::test_pr_merged ... ok
[INFO] [stdout] test approval::tests::test_pr_pending ... ok
[INFO] [stdout] test approval::tests::test_pr_closed ... ok
[INFO] [stdout] test approval::tests::test_retry_comment_found ... ok
[INFO] [stdout] test approval::tests::test_retry_comment_from_unauthorized ... ok
[INFO] [stdout] test approval::tests::test_retry_no_comment ... ok
[INFO] [stdout] test config::tests::github_token_file_and_github_token_mutual_exclusion ... ok
[INFO] [stdout] test config::tests::config_source_from_raw_detects_scheme ... ok
[INFO] [stdout] test config::tests::read_secret_file_strict_mode_behavior ... ok
[INFO] [stdout] test config::tests::read_secret_file_strips_trailing_newline ... ok
[INFO] [stdout] test config::tests::github_token_file_reads_value ... ok
[INFO] [stdout] test config::tests::test_bypass_label_configured ... ok
[INFO] [stdout] test config::tests::test_agent_kind_defaults_to_claude_cli ... ok
[INFO] [stdout] test config::tests::test_agents_block_overrides_defaults ... ok
[INFO] [stdout] test config::tests::test_bypass_label_default_none ... ok
[INFO] [stdout] test config::tests::test_custom_values ... ok
[INFO] [stdout] test config::tests::test_discord_source_allow_all_and_allow_users_conflicts ... ok
[INFO] [stdout] test config::tests::test_discord_source_duplicate_channel_rejected ... ok
[INFO] [stdout] test config::tests::test_discord_source_parses ... ok
[INFO] [stdout] test config::tests::test_discord_source_rejects_unknown_repo ... ok
[INFO] [stdout] test config::tests::test_duplicate_repos_rejected ... ok
[INFO] [stdout] test config::tests::test_env_override ... ok
[INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_result_message ... ok
[INFO] [stdout] test approval::tests::discord_cancel_is_distinct_outcome ... ok
[INFO] [stdout] test approval::tests::test_since_id_filters ... ok
[INFO] [stdout] test config::tests::fetch_remote_config_rejects_http ... ok
[INFO] [stdout] test config::tests::test_discord_source_empty_approvers_inherits_from_repo ... ok
[INFO] [stdout] test config::tests::test_missing_approvers ... ok
[INFO] [stdout] test config::tests::test_invalid_repo_format ... ok
[INFO] [stdout] test config::tests::test_legacy_single_repo_compat ... ok
[INFO] [stdout] test config::tests::test_missing_agents_block_uses_all_defaults ... ok
[INFO] [stdout] test config::tests::test_missing_ai_model ... ok
[INFO] [stdout] test config::tests::test_multi_repo_missing_repo_field ... ok
[INFO] [stdout] test config::tests::test_per_repo_agent_kind_overrides_global ... ok
[INFO] [stdout] test config::tests::test_per_task_agent_kind_overrides_repo ... ok
[INFO] [stdout] test config::tests::test_per_task_overrides ... ok
[INFO] [stdout] test config::tests::test_timeout_custom_values ... ok
[INFO] [stdout] test config::tests::test_timeout_defaults ... ok
[INFO] [stdout] test config::tests::test_timeout_per_task_overrides ... ok
[INFO] [stdout] test config::tests::test_missing_repo ... ok
[INFO] [stdout] test config::tests::test_valid_config ... ok
[INFO] [stdout] test config::tests::test_multi_repo_config ... ok
[INFO] [stdout] test config::tests::test_discord_debug_redacts_token ... ok
[INFO] [stdout] test config::tests::test_multi_repo_per_repo_overrides ... ok
[INFO] [stdout] test config::tests::test_no_sources_parses_as_empty_vec ... ok
[INFO] [stdout] test db::tests::test_bypass_default_false ... ok
[INFO] [stdout] test db::tests::test_get_all_issues_for_repo ... ok
[INFO] [stdout] test db::tests::test_backfill_repo ... ok
[INFO] [stdout] test db::tests::test_get_issue_any_repo ... ok
[INFO] [stdout] test db::tests::test_get_nonexistent_issue ... ok
[INFO] [stdout] test db::tests::test_get_issues_by_state ... ok
[INFO] [stdout] test db::tests::test_insert_populates_source_and_external_id ... ok
[INFO] [stdout] test config::tests::test_global_agent_kind_applies_to_repo ... ok
[INFO] [stdout] test db::tests::test_increment_retry_count ... ok
[INFO] [stdout] test db::tests::test_insert_and_get_issue ... ok
[INFO] [stdout] test db::tests::test_reset_retry_count ... ok
[INFO] [stdout] test db::tests::test_get_all_issues ... ok
[INFO] [stdout] test db::tests::test_update_issue_error ... ok
[INFO] [stdout] test db::tests::test_same_issue_number_different_repos ... ok
[INFO] [stdout] test db::tests::test_set_issue_bypass ... ok
[INFO] [stdout] test db::tests::test_update_issue_spec_comment ... ok
[INFO] [stdout] test db::tests::test_update_issue_state ... ok
[INFO] [stdout] test db::tests::test_update_issue_worktree ... ok
[INFO] [stdout] test db::tests::test_usage_log ... ok
[INFO] [stdout] test db::tests::test_spec_comment_and_last_comment ... ok
[INFO] [stdout] test discord::mock::tests::edit_message_records ... ok
[INFO] [stdout] test discord::mock::tests::fetch_new_messages_filters_by_since_id ... ok
[INFO] [stdout] test discord::mock::tests::post_message_records_and_appears_in_thread_fetch ... ok
[INFO] [stdout] test db::tests::test_update_issue_impl_pr ... ok
[INFO] [stdout] test discord::mock::tests::start_thread_returns_fresh_id ... ok
[INFO] [stdout] test env_expand::tests::lone_dollar_preserved ... ok
[INFO] [stdout] test env_expand::tests::dollar_dollar_escape ... ok
[INFO] [stdout] test env_expand::tests::mid_string_expansion ... ok
[INFO] [stdout] test env_expand::tests::multiple_vars_in_one_string ... ok
[INFO] [stdout] test env_expand::tests::unknown_var_empty ... ok
[INFO] [stdout] test db::tests::test_insert_duplicate_issue_ignored ... ok
[INFO] [stdout] test db::tests::test_retry_count_default_zero ... ok
[INFO] [stdout] test db::tests::test_update_issue_spec_content ... ok
[INFO] [stdout] test github::tests::test_create_issue ... ok
[INFO] [stdout] test env_expand::tests::unterminated_preserved ... ok
[INFO] [stdout] test env_expand::tests::whole_value_expansion ... ok
[INFO] [stdout] test github::tests::test_file_content ... ok
[INFO] [stdout] test github::tests::test_list_labeled_issues ... ok
[INFO] [stdout] test github::tests::test_post_and_get_comments ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_empty ... ok
[INFO] [stdout] test db::tests::test_migration_backfills_source_and_external_id ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_none ... ok
[INFO] [stdout] test models::tests::test_invalid_state_parse ... ok
[INFO] [stdout] test models::tests::test_issue_state_classification ... ok
[INFO] [stdout] test models::tests::test_issue_state_roundtrip ... ok
[INFO] [stdout] test models::tests::test_sort_priority ... ok
[INFO] [stdout] test models::tests::test_source_kind_invalid_parse ... ok
[INFO] [stdout] test models::tests::test_source_kind_roundtrip ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_failure ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_best_effort_logs_failure ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_success ... ok
[INFO] [stdout] test prompts::tests::test_claude_md_boundaries ... ok
[INFO] [stdout] test github::tests::test_pr_status ... ok
[INFO] [stdout] test prompts::tests::test_claude_md_for_review_content ... ok
[INFO] [stdout] test prompts::tests::test_extract_blocking_findings_none_found ... ok
[INFO] [stdout] test prompts::tests::test_implementation_prompt_content ... ok
[INFO] [stdout] test prompts::tests::test_implementation_prompt_with_feedback ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_bracketed_fail_detected ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_bracketed_pass_detected ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_inline_colon_fail ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_inline_colon_pass ... ok
[INFO] [stdout] test prompts::tests::test_extract_blocking_findings ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_no_false_positive_failsafe ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_no_false_positive_failure ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_no_false_positive_passing ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_fail ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_no_false_positive_password ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_pass ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_unparseable_returns_unknown ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_template_line_returns_unknown ... ok
[INFO] [stdout] test prompts::tests::test_review_prompt_content ... ok
[INFO] [stdout] test prompts::tests::test_spec_drafting_prompt_content ... ok
[INFO] [stdout] test prompts::tests::test_spec_drafting_prompt_without_feedback ... ok
[INFO] [stdout] test prompts::tests::test_spec_drafting_prompt_with_feedback ... ok
[INFO] [stdout] test publisher::tests::discord_publisher_post_routes_to_post_message ... ok
[INFO] [stdout] test publisher::tests::github_publisher_update_routes_to_update_issue_comment ... ok
[INFO] [stdout] test state_machine::tests::test_await_spec_approved ... ok
[INFO] [stdout] test state_machine::tests::test_await_spec_feedback ... ok
[INFO] [stdout] test publisher::tests::multiplex_fans_post_to_all_members ... ok
[INFO] [stdout] test state_machine::tests::test_discovered_poll ... ok
[INFO] [stdout] test state_machine::tests::test_feedback_loop_cycle ... ok
[INFO] [stdout] test state_machine::tests::test_implementing_poll ... ok
[INFO] [stdout] test state_machine::tests::test_invalid_transition ... ok
[INFO] [stdout] test state_machine::tests::test_pr_closed_without_merge ... ok
[INFO] [stdout] test state_machine::tests::test_pr_feedback ... ok
[INFO] [stdout] test state_machine::tests::test_pr_merged ... ok
[INFO] [stdout] test prompts::tests::test_parse_review_verdict_fail_in_summary ... ok
[INFO] [stdout] test publisher::tests::discord_publisher_update_routes_to_edit_message ... ok
[INFO] [stdout] test state_machine::tests::test_reset_from_any_state ... ok
[INFO] [stdout] test publisher::tests::github_publisher_post_routes_to_issue_comment ... ok
[INFO] [stdout] test state_machine::tests::test_retry_from_failed ... ok
[INFO] [stdout] test state_machine::tests::test_issue_closed_from_any_state ... ok
[INFO] [stdout] test state_machine::tests::test_transition_error_active ... ok
[INFO] [stdout] test state_machine::tests::test_transition_error_blocking ... ok
[INFO] [stdout] test state_machine::tests::test_retry_from_failed_implementing ... ok
[INFO] [stdout] test state_machine::tests::test_transition_error_reviewing ... ok
[INFO] [stdout] test state_machine::tests::test_retry_no_previous_state ... ok
[INFO] [stdout] test state_machine::tests::test_spec_drafting_poll ... ok
[INFO] [stdout] test state_machine::tests::test_reviewing_poll ... ok
[INFO] [stdout] test test_bypass_rejected_for_non_approver ... ok
[INFO] [stdout] test agents::acp::tests::default_agent_def_panics_for_claude_cli - should panic ... ok
[INFO] [stdout] test transitions::completion::tests::test_no_pr_number_does_nothing ... ok
[INFO] [stdout] test transitions::completion::tests::test_pr_closed_fails_issue ... ok
[INFO] [stdout] test transitions::completion::tests::test_pr_merged_completes_issue ... ok
[INFO] [stdout] test transitions::progress::tests::aggregator_is_silent_when_no_events_arrive ... ok
[INFO] [stdout] test transitions::implementing::tests::test_implementing_skips_if_pr_exists_no_feedback ... ok
[INFO] [stdout] test test_bypass_spec_auto_approval ... ok
[INFO] [stdout] test transitions::progress::tests::apply_upgrades_running_to_completed_by_title ... ok
[INFO] [stdout] test transitions::progress::tests::render_collapses_under_details_when_final ... ok
[INFO] [stdout] test transitions::progress::tests::thinking_only_is_visible ... ok
[INFO] [stdout] test transitions::progress::tests::render_open_form_omits_details_tag ... ok
[INFO] [stdout] test transitions::implementing::tests::test_implementing_with_feedback_no_pr_uses_impl_branch_and_goes_to_reviewing ... ok
[INFO] [stdout] test transitions::reviewing::tests::test_review_fail_max_iterations_creates_pr ... ok
[INFO] [stdout] test test_full_lifecycle ... ok
[INFO] [stdout] test transitions::implementing::tests::test_implementing_transitions_to_reviewing ... ok
[INFO] [stdout] test transitions::seed_filename_tests::claude_kinds_seed_claude_md ... ok
[INFO] [stdout] test transitions::seed_filename_tests::codex_seeds_agents_md ... ok
[INFO] [stdout] test transitions::seed_filename_tests::gemini_seeds_gemini_md ... ok
[INFO] [stdout] test transitions::reviewing::tests::test_review_idempotency_guard_transitions_to_await_pr_approval ... ok
[INFO] [stdout] test worktree::tests::test_absolute_base_dir_stays_absolute ... ok
[INFO] [stdout] test transitions::implementing::tests::test_implementing_with_feedback_revises ... ok
[INFO] [stdout] test transitions::reviewing::tests::test_review_pass_creates_pr ... ok
[INFO] [stdout] test worktree::tests::test_branch_naming ... ok
[INFO] [stdout] test transitions::reviewing::tests::test_review_fail_sends_back_to_implementing ... ok
[INFO] [stdout] test transitions::reviewing::tests::test_review_unparseable_verdict_creates_pr_with_advisory ... ok
[INFO] [stdout] test worktree::tests::test_relative_base_dir_becomes_absolute ... ok
[INFO] [stdout] test transitions::spec_drafting::tests::test_spec_drafting_posts_comment ... ok
[INFO] [stdout] test worktree::tests::test_worktree_dir_naming ... ok
[INFO] [stdout] test worktree::tests::test_mock_worktree_create ... ok
[INFO] [stdout] test worktree::tests::test_mock_seed_file ... ok
[INFO] [stdout] test transitions::progress::tests::aggregator_posts_initial_and_final_updates ... ok
[INFO] [stdout] test worktree::tests::test_worktree_created_at_correct_path_and_seedable ... ok
[INFO] [stdout] test worktree::tests::test_bare_clone_lands_in_correct_directory ... ok
[INFO] [stdout] test worktree::tests::test_bare_clone_has_origin_refs_after_setup ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_timeout ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 249 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.09s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "d03f70b38c202b1cc1a23ffe082151086db12a0093c6326b6edde1f247149984", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d03f70b38c202b1cc1a23ffe082151086db12a0093c6326b6edde1f247149984", kill_on_drop: false }`
[INFO] [stdout] d03f70b38c202b1cc1a23ffe082151086db12a0093c6326b6edde1f247149984
